EVT_WDF_REQUEST_COMPLETION_ROUTINE 콜백 함수(wdfrequest.h)
[KMDF 및 UMDF에 적용]
드라이버의 CompletionRoutine 이벤트 콜백 함수는 다른 드라이버가 지정된 I/O 요청을 완료할 때 실행됩니다.
구문
EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;
void EvtWdfRequestCompletionRoutine(
[in] WDFREQUEST Request,
[in] WDFIOTARGET Target,
[in] PWDF_REQUEST_COMPLETION_PARAMS Params,
[in] WDFCONTEXT Context
)
{...}
매개 변수
[in] Request
완료된 I/O 요청을 나타내는 프레임워크 요청 개체에 대한 핸들입니다.
[in] Target
요청을 완료한 I/O 대상을 나타내는 I/O 대상 개체에 대한 핸들입니다.
[in] Params
완료된 요청에 대한 정보를 포함하는 WDF_REQUEST_COMPLETION_PARAMS 구조체에 대한 포인터입니다. 완료 매개 변수의 유효성에 대해서는 아래 참고 사항을 참조하세요.
[in] Context
드라이버 제공 컨텍스트 정보- 드라이버가 WdfRequestSetCompletionRoutine에 대한 이전 호출에서 지정한 정보입니다.
반환 값
없음
설명
I/O 요청에 대해 CompletionRoutine 콜백 함수를 등록하려면 드라이버가 WdfRequestSetCompletionRoutine을 호출해야 합니다. 이 콜백 함수에 대한 자세한 내용은 I/O 요청 완료를 참조하세요.
완료 매개 변수 구조는 드라이버가 다음 중 하나를 호출하여 요청 형식을 지정한 경우에만 유효한 정보로 완전히 채워집니다.
- WdfIoTargetFormatXxx 메서드(예: WdfIoTargetFormatRequestForRead)
- WdfUsbTargetDeviceFormatRequestForXxx 메서드(예: WdfUsbTargetDeviceFormatRequestForString)
- WdfUsbTargetPipeFormatRequestForXxx 메서드(예: WdfUsbTargetPipeFormatRequestForWrite)
드라이버가 WdfRequestFormatRequestUsingCurrentType 또는 WdfRequestWdmFormatUsingStackLocation을 사용하여 요청 형식을 지정한 경우 완료 매개 변수 구조의 IoStatus 필드만 유효합니다.
KMDF 드라이버의 CompletionRoutine은 I/O 요청 개체의 WDF_OBJECT_ATTRIBUTES 구조에 지정된 ExecutionLevel에 관계없이 IRQL<= DISPATCH_LEVEL 실행할 수 있습니다.
예제
함수 형식은 다음과 같이 Wdfrequest.h에서 선언됩니다.
typedef VOID
(EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
);
MyCompletionRoutine이라는 CompletionRoutine 콜백 함수를 정의하려면 먼저 다음과 같이 SDV 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
VOID
MyCompletionRoutine (
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{...}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfrequest.h(Wdf.h 포함) |
IRQL | <=DISPATCH_LEVEL |