다음을 통해 공유


WdfRequestCompleteWithPriorityBoost 함수(wdfrequest.h)

[KMDF에만 적용]

WdfRequestCompleteWithPriorityBoost 메서드는 지정된 I/O 요청을 완료하고 완료 상태 제공합니다. 또한 시스템에서 I/O 작업을 요청한 스레드의 런타임 우선 순위를 높이는 데 사용할 수 있는 값을 지정합니다.

구문

void WdfRequestCompleteWithPriorityBoost(
  [in] WDFREQUEST Request,
  [in] NTSTATUS   Status,
  [in] CCHAR      PriorityBoost
);

매개 변수

[in] Request

완료되는 I/O 요청을 나타내는 프레임워크 요청 개체에 대한 핸들입니다.

[in] Status

요청의 완료 상태 나타내는 NTSTATUS 값입니다. 유효한 상태 값에는 다음이 포함되지만 이에 국한되지는 않습니다.

STATUS_SUCCESS

드라이버가 요청을 성공적으로 완료했습니다.

STATUS_CANCELLED

드라이버가 요청을 취소했습니다.

STATUS_UNSUCCESSFUL

요청을 처리하는 동안 드라이버에 오류가 발생했습니다.

[in] PriorityBoost

작업을 요청한 원래 스레드의 런타임 우선 순위를 증가시키는 시스템 정의 상수 값입니다. 상수 값은 디바이스 유형별 값이며 Wdm.h에 정의됩니다. 상수 이름의 형식은 XXX_INCREMENT입니다. 우선 순위 상승 값에 대한 자세한 내용은 I/O 요청을 완료할 때 우선 순위 향상 지정을 참조하세요.

반환 값

없음

설명

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

프레임워크에서 제공하는 기본 우선 순위 향상을 재정의하려면 드라이버가 WdfRequestCompleteWithPriorityBoost 를 호출해야 합니다. 예를 들어 드라이버는 오류를 감지했기 때문에 요청을 신속하게 완료할 수 있는 경우 우선 순위 향상을 IO_NO_INCREMENT 설정할 수 있습니다.

WdfRequestCompleteWithPriorityBoost를 호출한 후 드라이버가 요청 개체에 하나 이상의 추가 참조 수를 추가하기 위해 WdfObjectReference를 호출하지 않는 한 요청 핸들은 더 이상 유효하지 않습니다. WdfRequestCompleteWithPriorityBoost가 반환된 후 드라이버는 WdfObjectReference를 호출한 경우에도 연결된 WDM IRP 구조체에 액세스하려고 시도해서는 안 됩니다.

WdfRequestCompleteWithPriorityBoost 호출에 대한 자세한 내용은 I/O 요청 완료를 참조하세요.

예제

다음 코드 예제에서는 WdfRequestComplete의 예제에서 WdfRequestComplete 대신 WdfRequestCompleteWithPriorityBoost를 사용할 수 있는 방법을 보여줍니다.

switch (params.Type) {
    case WdfRequestTypeRead:
        length = params.Parameters.Read.Length;
        direction = WdfDmaDirectionReadFromDevice;
        break;
    case WdfRequestTypeWrite:
        length = params.Parameters.Write.Length;
        direction = WdfDmaDirectionWriteToDevice;
        break;
    default:
        WdfRequestCompleteWithPriorityBoost(
                                            Request,
                                            STATUS_INVALID_PARAMETER,
                                            IO_NO_INCREMENT
                                            );
        return;
    }

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfrequest.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), CompleteCanceledReq(kmdf), DeferredRequestCompleted(kmdf), DoubleCompletion(kmdf), DoubleCompletionLocal(kmdf), DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), EvtSurpriseRemoveNoRequestComplete(kmdf), InvalidReqAccess(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MarkCancOnCancReqLocal(kmdf), MdlAfterReqCompletedIntIoctl(kmdf), MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctl(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedRead(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWrite(kmdf), MdlAfterReqCompletedWriteA(kmdf), MemAfterReqCompletedIntIoctl(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctl(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedRead(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWrite(kmdf), MemAfterReqCompletedWriteA(kmdf), NoCancelFromEvtSurpriseRemove(kmdf), ReqDelete(kmdf), ReqIsCancOnCancReq(kmdf), ReqNotCanceledLocal(kmdf), ReqSendFail(kmdf), RequestCompleted(kmdf), RequestCompletedLocal(kmdf)

추가 정보

WdfObjectReference

WdfRequestComplete

WdfRequestCompleteWithInformation