Função WdfRequestCompleteWithPriorityBoost (wdfrequest.h)
[Aplica-se somente ao KMDF]
O método WdfRequestCompleteWithPriorityBoost conclui uma solicitação de E/S especificada e fornece uma status de conclusão. Ele também especifica um valor que o sistema pode usar para aumentar a prioridade de tempo de execução do thread que solicitou a operação de E/S.
Sintaxe
void WdfRequestCompleteWithPriorityBoost(
[in] WDFREQUEST Request,
[in] NTSTATUS Status,
[in] CCHAR PriorityBoost
);
Parâmetros
[in] Request
Um identificador para o objeto de solicitação de estrutura que representa a solicitação de E/S que está sendo concluída.
[in] Status
Um valor NTSTATUS que representa o status de conclusão da solicitação. Os valores de status válidos incluem, mas não se limitam a:
STATUS_SUCCESS
O driver concluiu a solicitação com êxito.
STATUS_CANCELLED
O driver cancelou a solicitação.
STATUS_UNSUCCESSFUL
O driver encontrou um erro ao processar a solicitação.
[in] PriorityBoost
Um valor constante definido pelo sistema pelo qual incrementar a prioridade de tempo de execução do thread original que solicitou a operação. Os valores constantes são específicos do tipo de dispositivo e são definidos em Wdm.h. O formato para os nomes constantes é XXX_INCREMENT. Para obter mais informações sobre valores de aumento de prioridade, consulte Especificando aumentos de prioridade ao concluir solicitações de E/S.
Retornar valor
Nenhum
Comentários
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Seu driver deve chamar WdfRequestCompleteWithPriorityBoost se você quiser substituir o aumento de prioridade padrão que a estrutura fornece. Por exemplo, o driver pode definir o aumento de prioridade como IO_NO_INCREMENT se ele foi capaz de concluir a solicitação rapidamente, talvez porque detectou um erro.
Depois que uma chamada para WdfRequestCompleteWithPriorityBoost retorna, o identificador de solicitação não é mais válido, a menos que o driver tenha chamado WdfObjectReference para adicionar uma ou mais contagens de referência adicionais ao objeto de solicitação. Observe que, depois que WdfRequestCompleteWithPriorityBoost retornar, o driver não deverá tentar acessar a estrutura WDM IRP associada, mesmo que tenha chamado WdfObjectReference.
Para obter mais informações sobre como chamar WdfRequestCompleteWithPriorityBoost, consulte Concluindo solicitações de E/S.
Exemplos
O exemplo de código a seguir mostra como o exemplo em WdfRequestComplete pode usar WdfRequestCompleteWithPriorityBoost em vez 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;
}