// wdfrequest.h
VOID WdfRequestCompleteWithPriorityBoost(
[in] WDFREQUEST Request,
[in] NTSTATUS Status,
[in] CCHAR PriorityBoost
);
View the official Windows Driver Kit DDI reference
No description available.
[Applies to KMDF only]
The WdfRequestCompleteWithPriorityBoost method completes a specified I/O request and supplies a completion status. It also specifies a value that the system can use to boost the run-time priority of the thread that requested the I/O operation.
Request
[in]A handle to the framework request object that represents the I/O request that is being completed.
Status
[in]An NTSTATUS value that represents the completion status of the request. Valid status values include, but are not limited to, the following:
The driver successfully completed the request.
The driver canceled the request.
The driver encountered an error while processing the request.
PriorityBoost
[in]A system-defined constant value by which to increment the run-time priority of the original thread that requested the operation. Constant values are device-type-specific and are defined in Wdm.h. The format for the constant names is XXX_INCREMENT. For more information about priority boost values, see Specifying Priority Boosts When Completing I/O Requests.
A bug check occurs if the driver supplies an invalid object handle.
Your driver should call WdfRequestCompleteWithPriorityBoost if you want to override the default priority boost that the framework provides. For example, the driver might set the priority boost to IO_NO_INCREMENT if it was able to complete the request quickly, perhaps because it detected an error.
After a call to WdfRequestCompleteWithPriorityBoost returns, the request handle is no longer valid unless the driver has called WdfObjectReference to add one or more additional reference counts to the request object. Note that after WdfRequestCompleteWithPriorityBoost returns, the driver must not attempt to access the associated WDM IRP structure, even if it has called WdfObjectReference.
For more information about calling WdfRequestCompleteWithPriorityBoost, see Completing I/O Requests.
The following code example shows how the example at WdfRequestComplete can use WdfRequestCompleteWithPriorityBoost instead of 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;
}
WdfRequestCompleteWithInformation