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 |
---|---|
|
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. |
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(
¶ms,
WDF_REQUEST_REUSE_NO_FLAGS,
STATUS_SUCCESS
);
status = WdfRequestReuse(
Request,
¶ms
);
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) |