Función WdfRequestCompleteWithPriorityBoost (wdfrequest.h)
[Solo se aplica a KMDF]
El método WdfRequestCompleteWithPriorityBoost completa una solicitud de E/S especificada y proporciona un estado de finalización. También especifica un valor que el sistema puede usar para aumentar la prioridad en tiempo de ejecución del subproceso que solicitó la operación de E/S.
Sintaxis
void WdfRequestCompleteWithPriorityBoost(
[in] WDFREQUEST Request,
[in] NTSTATUS Status,
[in] CCHAR PriorityBoost
);
Parámetros
[in] Request
Identificador del objeto de solicitud de marco que representa la solicitud de E/S que se está completando.
[in] Status
Valor NTSTATUS que representa el estado de finalización de la solicitud. Entre los valores de estado válidos se incluyen, entre otros, los siguientes:
STATUS_SUCCESS
El controlador completó correctamente la solicitud.
STATUS_CANCELLED
El controlador canceló la solicitud.
STATUS_UNSUCCESSFUL
El controlador encontró un error al procesar la solicitud.
[in] PriorityBoost
Valor constante definido por el sistema por el que se incrementa la prioridad en tiempo de ejecución del subproceso original que solicitó la operación. Los valores constantes son específicos del tipo de dispositivo y se definen en Wdm.h. El formato de los nombres de constantes es XXX_INCREMENT. Para obtener más información sobre los valores de aumento de prioridad, vea Especificar aumentos de prioridad al completar solicitudes de E/S.
Valor devuelto
None
Observaciones
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
El controlador debe llamar a WdfRequestCompleteWithPriorityBoost si desea invalidar el aumento de prioridad predeterminado que proporciona el marco. Por ejemplo, el controlador podría establecer el aumento de prioridad en IO_NO_INCREMENT si pudo completar la solicitud rápidamente, quizás porque detectó un error.
Después de que se devuelva una llamada a WdfRequestCompleteWithPriorityBoost , el identificador de solicitud ya no es válido a menos que el controlador haya llamado A WdfObjectReference para agregar uno o varios recuentos de referencia adicionales al objeto de solicitud. Tenga en cuenta que después de que WdfRequestCompleteWithPriorityBoost devuelva, el controlador no debe intentar acceder a la estructura IRP de WDM asociada, incluso si se ha llamado a WdfObjectReference.
Para obtener más información sobre cómo llamar a WdfRequestCompleteWithPriorityBoost, consulte Finalización de solicitudes de E/S.
Ejemplos
En el ejemplo de código siguiente se muestra cómo el ejemplo de WdfRequestComplete puede usar WdfRequestCompleteWithPriorityBoost en lugar de 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;
}