[KMDF에만 적용]
WDF_QUERY_INTERFACE_CONFIG 구조는 드라이버 정의 인터페이스를 설명합니다.
구문론
typedef struct _WDF_QUERY_INTERFACE_CONFIG {
ULONG Size;
PINTERFACE Interface;
const GUID *InterfaceType;
BOOLEAN SendQueryToParentStack;
PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtDeviceProcessQueryInterfaceRequest;
BOOLEAN ImportInterface;
} WDF_QUERY_INTERFACE_CONFIG, *PWDF_QUERY_INTERFACE_CONFIG;
구성원
Size
이 구조체의 크기(바이트)입니다.
Interface
드라이버 정의 인터페이스를 설명하는 INTERFACE 구조체에 대한 포인터입니다.
InterfaceType
인터페이스를 식별하는 GUID에 대한 포인터입니다.
비고
기존 인터페이스의 새 버전을 도입할 때 INTERFACE 구조의 크기 또는 버전 필드를 수정하는 대신 새 GUID를 만듭니다. 자세한 내용은 Driver-Defined 인터페이스 사용참조하세요.
SendQueryToParentStack
TRUE 드라이버가 WdfDeviceAddQueryInterface호출할 때 PDO(물리적 디바이스 개체)를 나타내는 디바이스 개체를 지정하는 경우 프레임워크는 인터페이스에 대한 요청을 부모 디바이스의 드라이버 스택 맨 위로 보냅니다. 이 멤버가 FALSE 디바이스 개체가 PDO를 나타내지 않는 경우 프레임워크는 부모 디바이스의 스택에 요청을 보내지 않습니다. 자세한 내용은 다음 설명 섹션을 참조하세요.
EvtDeviceProcessQueryInterfaceRequest
다른 드라이버가 인터페이스를 요청할 때 호출되는 드라이버의 EvtDeviceProcessQueryInterfaceRequest 이벤트 콜백 함수에 대한 포인터입니다.
ImportInterface
TRUE 경우 인터페이스는 인터페이스를 요청하는 드라이버와 드라이버 간의 양방향 통신을 지원합니다.
이 멤버가 FALSE 경우 인터페이스는 드라이버에서 인터페이스를 요청하는 드라이버로의 단방향 통신을 지원합니다.
비고
WDF_QUERY_INTERFACE_CONFIG 구조체는 WdfDeviceAddQueryInterface 메서드에 대한 입력으로 사용됩니다.
드라이버가 내보내는 각 드라이버 정의 인터페이스에 대해 인터페이스를 나타내는 WDF_QUERY_INTERFACE_CONFIG 구조를 할당해야 합니다. 다른 드라이버는 WdfFdoQueryForInterface호출하여 인터페이스에 대한 액세스를 요청할 수 있습니다.
인터페이스가 요청 드라이버와 드라이버 간의 양방향 통신을 지원하도록 하려면 ImportInterface 멤버를 TRUE설정합니다. importInterface TRUE 경우 요청 드라이버에서 제공하는 구조에 드라이버가 읽을 수 있는 데이터가 포함될 수 있습니다. 이 경우 다음과 같습니다.
- EvtDeviceProcessQueryInterfaceRequest 콜백 함수가 필요하며 요청 드라이버가 제공하는 인터페이스 구조를 초기화해야 합니다.
-
EvtDeviceProcessQueryInterfaceRequest 콜백 함수는 요청 드라이버에 인터페이스를 제공하므로 WDF_QUERY_INTERFACE_CONFIG인터페이스 멤버는 NULL 수 있습니다. 없는 NULL 포인터를 제공하는 경우 프레임워크는 요청 드라이버가 제공하는 크기 및 버전 값이 등록된 INTERFACE 구조의 값과 같거나 큰지 확인합니다. 이러한 값 중 하나가 더 작은 경우 프레임워크는 요청을 거부합니다. Interface값을 제공하지 않으면 EvtDeviceProcessQueryInterfaceRequest 콜백 함수가 해당 값을 확인해야 합니다.
- EvtDeviceProcessQueryInterfaceRequest 콜백 함수는 선택 사항입니다.
- 인터페이스 멤버는 NULL 수 없습니다. 프레임워크는 요청 드라이버에서 제공하는 GUID, 크기 및 버전 값이 제공한 값과 일치하는지 확인하고 값이 일치하지 않으면 프레임워크에서 요청을 거부합니다. 값이 유효한 경우 프레임워크는 Interface제공하는 값을 사용하여 요청 드라이버에서 제공하는 인터페이스 구조를 초기화합니다.
Interface 멤버가 비NULL경우 프레임워크는 이 값을 내부 스토리지 공간에 복사합니다. 따라서 드라이버는 로컬 임시 스토리지 공간에서 INTERFACE 구조를 할당할 수 있습니다.
드라이버가 WdfDeviceAddQueryInterface호출하는 경우 FDO(기능 디바이스 개체) 또는 PDO(물리적 디바이스 개체)를 나타내는 프레임워크 디바이스 개체와 인터페이스를 연결할 수 있습니다. 드라이버가 인터페이스를 PDO와 연결하는 경우 WDF_QUERY_INTERFACE_CONFIG 구조체의 SendQueryToParentStack 멤버를 TRUE설정할 수 있습니다. 프레임워크가 인터페이스에 대한 요청을 가로채면 SendQueryToParentStack 멤버를 확인하고, TRUE 설정되면 프레임워크는 PDO 부모의 드라이버 스택 맨 위에 요청을 보냅니다. 결과적으로 요청은 두 개의 드라이버 스택 아래로 이동합니다. 첫째, 인터페이스를 요청하는 드라이버가 포함된 스택이고, 두 번째는 인터페이스 디바이스의 부모 스택입니다.
프레임워크는 InterfaceReference 대한 주소를 지정하고 INTERFACE 구조의 InterfaceDereference 멤버를 지정하여 인터페이스와 함께 사용할 수 있는 두 가지 참조/역참조 메서드를 제공합니다. 이러한 메서드에 대한 자세한 내용은 WdfDeviceInterfaceReferenceNoOp 및 WdfDeviceInterfaceDereferenceNoOp참조하세요.
드라이버는 WDF_QUERY_INTERFACE_CONFIG_INIT호출하여 이 구조를 초기화해야 합니다.
드라이버 정의 인터페이스에 대한 자세한 내용은 Driver-Defined 인터페이스 사용참조하세요.
요구 사항
요구 사항 | 가치 |
---|---|
최소 KMDF 버전 | 1.0 |
헤더 | wdfqueryinterface.h(Wdf.h 포함) |
참고하십시오
EvtDeviceProcessQueryInterfaceRequest
WDF_QUERY_INTERFACE_CONFIG_INIT
WdfDeviceInterfaceDereferenceNoOp