WdfRequestReuse, fonction (wdfrequest.h)
[S’applique à KMDF et UMDF]
La méthode WdfRequestReuse réinitialise un objet de demande 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 d’un objet de requête d’infrastructure.
[in] ReuseParams
Pointeur vers une structure de WDF_REQUEST_REUSE_PARAMS allouée par l’appelant.
Valeur retournée
WdfRequestReuse retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
Un paramètre d’entrée n’est pas valide. |
|
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. |
Un bogue case activée 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 les 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 faire preuve de prudence lors de la réutilisation des objets de demande reçus 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 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 d’objets de demande d’infrastructure.
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(
¶ms,
WDF_REQUEST_REUSE_NO_FLAGS,
STATUS_SUCCESS
);
status = WdfRequestReuse(
Request,
¶ms
);
ASSERT(NT_SUCCESS(status));
...
}
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), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf) |