WdfRequestCancelSentRequest 함수(wdfrequest.h)

[KMDF 및 UMDF에 적용]

WdfRequestCancelSentRequest 메서드는 호출자가 이전에 I/O 대상에 제출한 I/O 요청을 취소하려고 시도합니다.

구문

BOOLEAN WdfRequestCancelSentRequest(
  [in] WDFREQUEST Request
);

매개 변수

[in] Request

프레임워크 요청 개체에 대한 핸들입니다.

반환 값

WdfRequestCancelSentRequest 는 드라이버의 I/O 대상에 취소 요청을 성공적으로 전달하면 TRUE 를 반환합니다. 이 메서드는 요청이 이미 완료되었거나 취소되었거나 I/O 대상 드라이버가 WdfRequestMarkCancelable 또는 WdfRequestMarkCancelableEx를 호출하지 않은 경우 FALSE 반환합니다.

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

드라이버는 WdfRequestCancelSentRequest 를 호출하여 WdfRequestSend를 호출하여 이전에 I/O 대상으로 보낸 I/O 요청을 취소하려고 시도할 수 있습니다.

요청이 I/O 대상의 큐에 있는 경우 프레임워크는 요청을 취소합니다. 프레임워크가 이미 I/O 대상의 드라이버에 요청을 전달하고 해당 드라이버가 취소를 사용하도록 설정하기 위해 WdfRequestMarkCancelable 또는 WdfRequestMarkCancelableEx 를 호출한 경우 프레임워크는 해당 드라이버의 EvtRequestCancel 콜백 함수를 호출합니다. 대상의 드라이버가 WdfRequestMarkCancelable 또는 WdfRequestMarkCancelableEx를 호출하지 않은 경우 요청을 취소할 수 없는 한 요청이 취소되지 않습니다.

드라이버가 요청에 대해 CompletionRoutine 콜백 함수를 등록한 경우 프레임워크는 요청이 취소된 후 콜백 함수를 호출합니다.

일반적으로 드라이버 가 WdfRequestCancelSentRequest를 호출하는 경우 요청 개체의 참조 수를 증가시켜야 합니다. 자세한 내용은 보낸 요청 취소 동기화를 참조하세요.

요청 취소에 대한 자세한 내용은 I/O 요청 취소를 참조하세요.

예제

다음 코드 예제는 kmdf_fx2 샘플 드라이버에서 가져옵니다. 이 예제는 EvtIoStop 콜백 함수입니다. 이 드라이버는 각 요청을 I/O 대상으로 보내기 때문에 디바이스가 제거된 경우 EvtIoStop 콜백 함수는 WdfRequestCancelSentRequest 를 호출합니다.

VOID
OsrFxEvtIoStop(
    IN WDFQUEUE  Queue,
    IN WDFREQUEST  Request,
    IN ULONG  ActionFlags
    )
{
    UNREFERENCED_PARAMETER(Queue);

    if (ActionFlags & WdfRequestStopActionSuspend) {
        WdfRequestStopAcknowledge(Request, FALSE);
    } else if (ActionFlags & WdfRequestStopActionPurge) {
        WdfRequestCancelSentRequest(Request);
    }
    return;
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfrequest.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

CompletionRoutine

EvtRequestCancel

WdfRequestMarkCancelable

WdfRequestMarkCancelableEx

WdfRequestSend