Partager via


Fonction WdfRequestGetStatus (wdfrequest.h)

[S’applique à KMDF et UMDF]

La méthode WdfRequestGetStatus retourne la status d’une requête d’E/S.

Syntaxe

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Paramètres

[in] Request

Handle d’un objet de requête d’infrastructure.

Valeur retournée

WdfRequestGetStatus retourne une valeur NTSTATUS. Pour plus d’informations sur la valeur qui peut être retournée, consultez la section Remarques suivante.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

La méthode WdfRequestGetStatus retourne l’un des éléments suivants :

  • Si l’appel d’un pilote à WdfRequestSend réussit, WdfRequestGetStatus retourne la valeur status définie par le pilote qui appelle WdfRequestComplete pour terminer la requête spécifiée. Le pilote appelle généralement WdfRequestGetStatus à partir d’une fonction de rappel CompletionRoutine .
  • Si l’appel d’un pilote à WdfRequestSend échoue, WdfRequestGetStatus retourne une valeur status que l’infrastructure a définie pour décrire l’échec. Le pilote peut appeler WdfRequestGetStatus immédiatement après l’appel de WdfRequestSend.
Si le pilote définit l’indicateur WDF_REQUEST_SEND_OPTION_SYNCHRONOUS pour une requête lors de l’appel de WdfRequestSend, il peut appeler WdfRequestGetStatus immédiatement après l’appel de WdfRequestSend, que l’appel à WdfRequestSend réussisse ou échoue.

Pour plus d’informations sur l’achèvement des demandes, consultez Terminer les demandes d’E/S.

Exemples

L’exemple de code suivant provient de l’exemple de pilote KbFiltr . Cet exemple envoie une demande d’E/S à une cible d’E/S. Si WdfRequestSend échoue, l’exemple utilise la valeur de retour WdfRequestGetStatus comme entrée dans 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;
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfrequest.h (include Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Voir aussi

CompletionRoutine

WdfRequestComplete

WdfRequestSend