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 傳回之後,驅動程式不得嘗試存取相關聯的 WDM IRP 結構,即使它已呼叫 WdfObjectReference 也一樣。
如需呼叫 WdfRequestCompleteWithPriorityBoost 的詳細資訊,請參閱 完成 I/O 要求。
範例
下列程式代碼範例示範 WdfRequestComplete 的範例如何使用 WdfRequestCompleteWithPriorityBoost ,而不是 WdfRequestComplete。
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;
}