EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST 콜백 함수(wdfqueryinterface.h)
[KMDF에만 적용]
드라이버의 EvtDeviceProcessQueryInterfaceRequest 이벤트 콜백 함수는 프레임워크가 요청 드라이버에 인터페이스를 전달하기 전에 드라이버 정의 인터페이스에 대한 액세스에 대한 다른 드라이버의 요청을 검사합니다.
통사론
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtWdfDeviceProcessQueryInterfaceRequest;
NTSTATUS EvtWdfDeviceProcessQueryInterfaceRequest(
[in] WDFDEVICE Device,
[in] LPGUID InterfaceType,
[in, out] PINTERFACE ExposedInterface,
[in, out] PVOID ExposedInterfaceSpecificData
)
{...}
매개 변수
[in] Device
프레임워크 디바이스 개체에 대한 핸들입니다.
[in] InterfaceType
드라이버 정의 인터페이스를 식별하는 GUID에 대한 포인터입니다.
[in, out] ExposedInterface
드라이버 정의 인터페이스를 설명하고 인터페이스에 대한 액세스를 요청하는 드라이버에서 제공한 INTERFACE 구조체에 대한 포인터입니다.
[in, out] ExposedInterfaceSpecificData
추가적인 선택적 드라이버 정의 인터페이스 관련 정보에 대한 포인터입니다. 프레임워크 기반 드라이버는 WdfFdoQueryForInterface호출할 때NULLInterfaceSpecificData 매개 변수 값을 제공하여 이 값을 지정합니다.
반환 값
EvtDeviceProcessQueryInterfaceRequest 콜백 함수는 특정 경우 인터페이스를 서비스하지 않는다고 판단되는 경우 STATUS_NOT_SUPPORTED 반환해야 합니다. 프레임워크는 요청을 스택 아래로 계속 전달하여 다른 드라이버가 인터페이스를 지원하는지 확인합니다. 이 상황에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
콜백 함수에 오류가 발생하면 NT_SUCCESS(
발언
프레임워크 기반 드라이버는 WdfDeviceAddQueryInterface호출하여 EvtDeviceProcessQueryInterfaceRequest 이벤트 콜백 함수를 등록합니다.
드라이버 정의 인터페이스가 단방향 통신만 지원하고 인터페이스를 설명하는
드라이버가 양방향 통신을 지원하는 인터페이스를 정의하고 WDF_QUERY_INTERFACE_CONFIG 구조의 ImportInterface 멤버를 TRUE설정하는 경우 드라이버는 EvtDeviceProcessQueryInterfaceRequest 이벤트 콜백 함수를 제공해야 합니다. importInterface
콜백 함수는 인터페이스를 수정할 수 있습니다. 특히 다음을 수행할 수 있습니다.
- 인터페이스의 모든 멤버에서 값을 변경합니다.
- INTERFACE 구조체의 Context 멤버를 수정하여 동적 인스턴스별 컨텍스트를 할당합니다.
드라이버 정의 인터페이스에 대한 자세한 내용은 Driver-Defined 인터페이스 사용참조하세요.
예제
EvtDeviceProcessQueryInterfaceRequest 콜백 함수를 정의하려면 먼저 정의하는 콜백 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버,
예를 들어 MyDeviceProcessQueryInterfaceRequest명명된 EvtDeviceProcessQueryInterfaceRequest 콜백 함수를 정의하려면 다음 코드 예제와 같이 EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST 형식을 사용합니다.
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST MyDeviceProcessQueryInterfaceRequest;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
_Use_decl_annotations_
NTSTATUS
MyDeviceProcessQueryInterfaceRequest (
WDFDEVICE Device,
LPGUID InterfaceType,
PINTERFACE ExposedInterface,
PVOID ExposedInterfaceSpecificData
)
{...}
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST 함수 형식은 WdfQueryInterface.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다.
Use_decl_annotations 주석은 헤더 파일의 EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST 함수 형식에 적용되는 주석이 사용되는지 확인합니다.
함수 선언 요구 사항에 대한 자세한 내용은 KMDF 드라이버함수 역할 형식을 사용하여 함수 선언을 참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
최소 KMDF 버전 | 1.0 |
헤더 | wdfqueryinterface.h(Wdf.h 포함) |
IRQL |
PASSIVE_LEVEL |