WdfRequestReuse, fonction (wdfrequest.h)

[S’applique à KMDF et UMDF]

La méthode WdfRequestReuse réinitialise un objet de requête d’infrastructure afin qu’il puisse être réutilisé.

Syntaxe

NTSTATUS WdfRequestReuse(
  [in] WDFREQUEST                Request,
  [in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);

Paramètres

[in] Request

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

[in] ReuseParams

Pointeur vers une structure WDF_REQUEST_REUSE_PARAMS allouée par l’appelant.

Valeur de retour

WdfRequestReuse retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut renvoyer l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
Un paramètre d’entrée n’est pas valide.
STATUS_WDF_REQUEST_INVALID_STATE
Le pilote a fourni un IRP dans la structure WDF_REQUEST_REUSE_PARAMS , mais l’objet de requête spécifié n’a pas été obtenu à partir de WdfRequestCreateFromIrp.
 

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Remarques

Un pilote basé sur l’infrastructure peut réutiliser les objets de requête d’infrastructure qu’il a créés par des appels précédents à WdfRequestCreate ou WdfRequestCreateFromIrp. Les pilotes peuvent également réutiliser les objets de requête qu’ils ont reçus de l’infrastructure, mais ils ne peuvent pas définir l’indicateur WDF_REQUEST_REUSE_SET_NEW_IRP pour ces objets de requête.

Notes

Les pilotes doivent utiliser la prudence lors de la réutilisation des objets de requête reçus à partir de l’infrastructure. La réutilisation d’une telle demande réinitialise l’indicateur d’annulation de l’IRP sous-jacent et peut empêcher un pilote appelant d’annuler la demande.

Un pilote peut réutiliser un objet de requête une fois la demande d’origine terminée. Une fois qu’un pilote a appelé WdfRequestReuse, le contenu de la requête doit être réinitialisé. Le pilote peut spécifier certains paramètres de requête dans la structure WDF_REQUEST_REUSE_PARAMS .

Si vous souhaitez que la requête réutilisée dispose d’une fonction de rappel CompletionRoutine , le pilote doit appeler WdfRequestSetCompletionRoutine après avoir appelé WdfRequestReuse.

Pour plus d’informations sur WdfRequestReuse, consultez Reusing Framework Request Objects.

Exemples

L’exemple de code suivant fait partie d’une fonction de rappel CompletionRoutine qui appelle WdfRequestReuse afin que le pilote puisse réutiliser une requête allouée au pilote.

VOID
MyRequestCompletionRoutine(
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    PWDF_REQUEST_COMPLETION_PARAMS  CompletionParams,
    IN WDFCONTEXT  Context
    )
{
    WDF_REQUEST_REUSE_PARAMS  params;
    NTSTATUS  status;
...
    WDF_REQUEST_REUSE_PARAMS_INIT(
                                  &params,
                                  WDF_REQUEST_REUSE_NO_FLAGS,
                                  STATUS_SUCCESS
                                  );

    status = WdfRequestReuse(
                             Request,
                             &params
                             );
    ASSERT(NT_SUCCESS(status));
...
}

Configuration requise

   
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), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf)

Voir aussi

CompletionRoutine

WDF_REQUEST_REUSE_PARAMS

WDF_REQUEST_REUSE_PARAMS_INIT

WdfRequestCreate

WdfRequestCreateFromIrp

WdfRequestSetCompletionRoutine