Condividi tramite


Funzione WdfRequestGetStatus (wdfrequest.h)

[Si applica a KMDF e UMDF]

Il metodo WdfRequestGetStatus restituisce lo stato di una richiesta di I/O.

Sintassi

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Parametri

[in] Request

Handle per un oggetto richiesta del framework.

Valore restituito

WdfRequestGetStatus restituisce un valore NTSTATUS. Per altre informazioni sul valore che può essere restituito, vedere la sezione Osservazioni seguente.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Commenti

Il metodo WdfRequestGetStatus restituisce uno dei seguenti elementi:

  • Se la chiamata di un driver a WdfRequestSend ha esito positivo, WdfRequestGetStatus restituisce il valore di stato impostato dal driver che chiama WdfRequestComplete per completare la richiesta specificata. Il driver chiama in genere WdfRequestGetStatus dall'interno di una funzione di callback CompletionRoutine .
  • Se la chiamata di un driver a WdfRequestSend ha esito negativo, WdfRequestGetStatus restituisce un valore di stato impostato dal framework per descrivere l'errore. Il driver può chiamare WdfRequestGetStatus immediatamente dopo aver chiamato WdfRequestSend.
Se il driver imposta il flag di WDF_REQUEST_SEND_OPTION_SYNCHRONOUS per una richiesta quando si chiama WdfRequestSend, il driver può chiamare WdfRequestGetStatus immediatamente dopo aver chiamato WdfRequestSend, indipendentemente dal fatto che la chiamata a WdfRequestSend abbia esito positivo o negativo.

Per altre informazioni sul completamento della richiesta, vedere Completamento delle richieste di I/O.

Esempio

L'esempio di codice seguente è tratto dal driver di esempio KbFiltr . In questo esempio viene inviata una richiesta di I/O a una destinazione di I/O. Se WdfRequestSend ha esito negativo, nell'esempio viene usato il valore restituito WdfRequestGetStatus come input per 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;
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfrequest.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Vedi anche

CompletionRoutine

WdfRequestComplete

WdfRequestSend