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;
}