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 |