WdfDeviceConfigureWdmIrpDispatchCallback 함수(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WdfDeviceConfigureWdmIrpDispatchCallback 메서드는 드라이버의 EvtDeviceWdmIrpDispatch 콜백 함수를 등록합니다.

구문

NTSTATUS WdfDeviceConfigureWdmIrpDispatchCallback(
  [in]           WDFDEVICE                      Device,
  [in, optional] WDFDRIVER                      Driver,
  [in]           UCHAR                          MajorFunction,
                 PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
  [in, optional] WDFCONTEXT                     DriverContext
);

매개 변수

[in] Device

프레임워크 디바이스 개체에 대한 핸들입니다.

[in, optional] Driver

드라이버가 WdfDriverCreate 또는 WdfGetDriver 에 대한 이전 호출에서 가져온 드라이버의 프레임워크 드라이버 개체 에 대한 핸들입니다. 이 매개 변수는 선택적 요소입니다.

[in] MajorFunction

다음 IRP 주요 함수 코드 중 하나인 IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL, IRP_MJ_READ, IRP_MJ_WRITE.

EvtDeviceWdmIrpDispatch

드라이버의 EvtDeviceWdmIrpDispatch 콜백 함수에 대한 포인터입니다.

[in, optional] DriverContext

프레임워크가 드라이버의 EvtDeviceWdmIrpDispDispatch 콜백 함수에 전달하는 드라이버 정의 컨텍스트 정보에 대한 형식화되지 않은 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

WdfDeviceConfigureWdmIrpDispatchCallback 메서드에 오류가 발생하지 않으면 STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 MajorFunction 값이 제공되었습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리가 부족했습니다.

설명

드라이버는 WdfDeviceConfigureWdmIrpDispatchCallback 메서드를 호출하여 EvtDeviceWdmIrpDispAtch 콜백 함수를 등록합니다. 그런 다음 프레임워크는 이 메서드의 MajorFunction 매개 변수와 일치하는 IRP 주 함수 코드가 포함된 IRP(I/O 요청 패킷)를 받을 때마다 EvtDeviceWdmIrpDispatch를 호출합니다.

드라이버는 일반적으로 EvtDriverDeviceAdd 콜백 함수에서 WdfDeviceConfigureWdmIrpDispatchCallback을 호출합니다.

드라이버가 콜백 함수를 등록하려는 각 MJ 함수에 대해 WdfDeviceConfigureWdmIrpDispAtchCallback 을 한 번 호출해야 합니다. 즉, 여러 MJ 함수를 가로채려면 여러 호출이 필요합니다.

드라이버는 다음과 같은 이유로 WdfDeviceConfigureWdmIrpDispatchCallback 메서드를 호출할 수 있습니다.

  • 예를 들어, IRP를 검사하고 도메인별 기준에 따라 특정 큐에 할당하려면 파일 개체와 연결된 모든 I/O를 특정 큐로 전달합니다.
  • 개별 요청 기준으로 선택하려면 EvtIoInCallerContext 콜백 함수를 호출해야 합니다.

IRP가 도착할 때 큐를 지정하는 방법에 대한 자세한 내용은 I/O 큐에 IRP 디스패치를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.11
최소 UMDF 버전 2.17
머리글 wdfdevice.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf)

추가 정보

EvtDeviceWdmIrpDispatch

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue