Freigeben über


WdfRequestGetStatus-Funktion (wdfrequest.h)

[Gilt für KMDF und UMDF]

Die WdfRequestGetStatus-Methode gibt den status einer E/A-Anforderung zurück.

Syntax

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Parameter

[in] Request

Ein Handle für ein Frameworkanforderungsobjekt.

Rückgabewert

WdfRequestGetStatus gibt einen NTSTATUS-Wert zurück. Weitere Informationen dazu, welcher Wert zurückgegeben werden kann, finden Sie im folgenden Abschnitt Hinweise.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Die WdfRequestGetStatus-Methode gibt eine der folgenden Rückgaben zurück:

  • Wenn der Aufruf eines Treibers an WdfRequestSend erfolgreich ist, gibt WdfRequestGetStatus den status Wert zurück, der vom Treiber festgelegt wird, der WdfRequestComplete aufruft, um die angegebene Anforderung abzuschließen. Der Treiber ruft in der Regel WdfRequestGetStatus aus einer CompletionRoutine-Rückruffunktion auf.
  • Wenn der Aufruf eines Treibers an WdfRequestSend fehlschlägt, gibt WdfRequestGetStatus einen status Wert zurück, den das Framework zur Beschreibung des Fehlers festgelegt hat. Der Treiber kann WdfRequestGetStatus unmittelbar nach dem Aufruf von WdfRequestSend aufrufen.
Wenn der Treiber beim Aufrufen von WdfRequestSend das WDF_REQUEST_SEND_OPTION_SYNCHRONOUS-Flag für eine Anforderung festlegt, kann der Treiber WdfRequestGetStatus unmittelbar nach dem Aufruf von WdfRequestSend aufrufen, unabhängig davon, ob der Aufruf von WdfRequestSend erfolgreich ist oder fehlschlägt.

Weitere Informationen zum Abschluss der Anforderung finden Sie unter Abschließen von E/A-Anforderungen.

Beispiele

Das folgende Codebeispiel stammt aus dem KbFiltr-Beispieltreiber . In diesem Beispiel wird eine E/A-Anforderung an ein E/A-Ziel gesendet. Wenn WdfRequestSend fehlschlägt , verwendet das Beispiel den WdfRequestGetStatus-Rückgabewert als Eingabe für 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;
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfrequest.h (include Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Weitere Informationen

CompletionRoutine

WdfRequestComplete

WdfRequestSend