다음을 통해 공유


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 요청 완료를 참조하세요.

완료 매개 변수 구조는 드라이버가 다음 중 하나를 호출하여 요청 형식을 지정한 경우에만 유효한 정보로 완전히 채워집니다.

드라이버가 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

추가 정보

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine