Compartilhar via


Função WdfRequestGetStatus (wdfrequest.h)

[Aplica-se a KMDF e UMDF]

O método WdfRequestGetStatus retorna o status de uma solicitação de E/S.

Sintaxe

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Parâmetros

[in] Request

Um identificador para um objeto de solicitação de estrutura.

Retornar valor

WdfRequestGetStatus retorna um valor NTSTATUS. Para obter mais informações sobre qual valor pode ser retornado, consulte a seção Comentários a seguir.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

O método WdfRequestGetStatus retorna um dos seguintes:

  • Se a chamada de um driver para WdfRequestSend for bem-sucedida, WdfRequestGetStatus retornará o valor status definido pelo driver que chama WdfRequestComplete para concluir a solicitação especificada. O driver normalmente chama WdfRequestGetStatus de dentro de uma função de retorno de chamada CompletionRoutine .
  • Se uma chamada de driver para WdfRequestSend falhar, WdfRequestGetStatus retornará um valor status que a estrutura definiu para descrever a falha. O driver pode chamar WdfRequestGetStatus imediatamente após chamar WdfRequestSend.
Se o driver definir o sinalizador WDF_REQUEST_SEND_OPTION_SYNCHRONOUS para uma solicitação ao chamar WdfRequestSend, o driver poderá chamar WdfRequestGetStatus imediatamente após chamar WdfRequestSend, se a chamada para WdfRequestSend for bem-sucedida ou falhar.

Para obter mais informações sobre a conclusão da solicitação, consulte Concluindo solicitações de E/S.

Exemplos

O exemplo de código a seguir é do driver de exemplo KbFiltr . Este exemplo envia uma solicitação de E/S para um destino de E/S. Se WdfRequestSend falhar, o exemplo usará o valor retornado WdfRequestGetStatus como entrada para WdfRequestComplete.

VOID
KbFilter_ForwardRequest(
    IN WDFREQUEST Request,
    IN WDFIOTARGET Target
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    BOOLEAN ret;
    NTSTATUS status;

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend(
                         Request,
                         Target,
                         &options
                         );

    if (ret == FALSE) {
        status = WdfRequestGetStatus (Request);
        DebugPrint(("WdfRequestSend failed: 0x%x\n", status));
        WdfRequestComplete(
                           Request,
                           status
                           );
    }
    return;
}

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho wdfrequest.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Confira também

Completionroutine

WdfRequestComplete

WdfRequestSend