다음을 통해 공유


BUS_INTERFACE_REFERENCE 구조체(ks.h)

소프트웨어 디바이스 열거자는 드라이버가 사용 중인 동안 디바이스가 활성 상태로 유지되고 사용하지 않을 때 언로드되도록 PDO(물리적 디바이스 개체) 수를 참조할 수 있도록 이 인터페이스를 내보냅니다.

구문

typedef struct {
  INTERFACE                  Interface;
  PFNREFERENCEDEVICEOBJECT   ReferenceDeviceObject;
  PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
  PFNQUERYREFERENCESTRING    QueryReferenceString;
} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;

멤버

Interface

내보낸 인터페이스를 지정합니다.

ReferenceDeviceObject

드라이버 제공 KStrReferenceDeviceObject 루틴에 대한 포인터입니다.

DereferenceDeviceObject

드라이버 제공 KStrDereferenceDeviceObject 루틴에 대한 포인터입니다.

QueryReferenceString

드라이버 제공 KStrQueryReferenceString 루틴에 대한 포인터입니다.

설명

드라이버는 IRP_MN_QUERY_INTERFACE 부 함수 코드를 지정하는 IRP_MJ_PNP 요청을 만들고 전송하여 BUS_INTERFACE_REFERENCE 인터페이스를 가져옵니다. 이렇게 하려면 드라이버는 다음을 수행해야 합니다.

  • 페이징된 메모리 풀에서 BUS_INTERFACE_REFERENCE 구조를 할당하고 0으로 채웁니다.
  • 쿼리 인터페이스 요청에 대한 IRP를 만들고 새 IRP에 대한 다음 스택 위치를 가져옵니다.
  • 새 스택 위치에서 Parameters.QueryInterface.Interface 멤버의 새 BUS_INTERFACE_REFERENCE 구조체에 대한 포인터를 제공합니다.
  • 완료 루틴을 설정하고 드라이버 스택 아래로 요청을 보냅니다.
  • 요청이 성공하면 시스템은 Parameters.QueryInterface.Interface가 가리키는 BUS_INTERFACE_REFERENCE 구조를 채웁니다.

요구 사항

요구 사항
헤더 ks.h(Ks.h 포함)