Partager via


WdfRequestReuse, fonction (wdfrequest.h)

[S’applique à KMDF et UMDF]

La méthode WdfRequestReuse réinitialise un objet de requête de framework afin qu’elle puisse être réutilisée.

Syntaxe

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

Paramètres

[in] Request

Handle vers un objet de requête de framework.

[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 retourner l’une des valeurs suivantes :

Retourner le code 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 de WDF_REQUEST_REUSE_SET_NEW_IRP pour ces objets de requête.

Note

Les pilotes doivent être prudents 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 requête.

Un pilote peut réutiliser un objet de requête une fois la requête 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 demande réutilisée ait une fonction de rappel CompletionRoutine, le pilote doit appeler WdfRequestSetCompletionRoutine après avoir appelé WdfRequestReuse.

Pour plus d’informations sur WdfRequestReuse, consultez réutilisation des objets de requête framework.

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 par le 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));
...
}

Exigences

Exigence Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
d’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