EVT_WDF_REQUEST_COMPLETION_ROUTINE fonction de rappel (wdfrequest.h)
[S’applique à KMDF et UMDF]
La fonction de rappel d’événement CompletionRoutine d’un pilote s’exécute lorsqu’un autre pilote termine une demande d’E/S spécifiée.
Syntaxe
EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;
void EvtWdfRequestCompletionRoutine(
[in] WDFREQUEST Request,
[in] WDFIOTARGET Target,
[in] PWDF_REQUEST_COMPLETION_PARAMS Params,
[in] WDFCONTEXT Context
)
{...}
Paramètres
[in] Request
Handle pour un objet de demande d’infrastructure qui représente la demande d’E/S terminée.
[in] Target
Handle vers un objet cible d’E/S qui représente la cible d’E/S qui a terminé la demande.
[in] Params
Pointeur vers une structure WDF_REQUEST_COMPLETION_PARAMS qui contient des informations sur la requête terminée. Voir la remarque ci-dessous concernant la validité des paramètres d’achèvement.
[in] Context
Informations de contexte fournies par le pilote, que le pilote a spécifiées dans un appel précédent à WdfRequestSetCompletionRoutine.
Valeur de retour
None
Remarques
Pour inscrire une fonction de rappel CompletionRoutine pour une requête d’E/S, un pilote doit appeler WdfRequestSetCompletionRoutine. Pour plus d’informations sur cette fonction de rappel, consultez Achèvement des demandes d’E/S.
La structure des paramètres d’achèvement est entièrement remplie avec des informations valides uniquement si le pilote a mis en forme la demande en appelant l’une des options suivantes :
- Méthodes WdfIoTargetFormatXxx , par exemple WdfIoTargetFormatRequestForRead
- Méthodes WdfUsbTargetDeviceFormatRequestForXxx , par exemple WdfUsbTargetDeviceFormatRequestForString
- Méthodes WdfUsbTargetPipeFormatRequestForXxx , par exemple WdfUsbTargetPipeFormatRequestForWrite
Si le pilote a mis en forme la requête à l’aide de WdfRequestFormatRequestUsingCurrentType ou WdfRequestWdmFormatUsingStackLocation, seul le champ IoStatus dans la structure des paramètres d’achèvement est valide.
Le CompletionRoutine d’un pilote KMDF peut s’exécuter à IRQL <= DISPATCH_LEVEL indépendamment de la valeur ExecutionLevel spécifiée dans la structure WDF_OBJECT_ATTRIBUTES pour l’objet de requête d’E/S.
Exemples
Le type de fonction est déclaré dans Wdfrequest.h, comme suit.
typedef VOID
(EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
);
Pour définir une fonction de rappel CompletionRoutine nommée MyCompletionRoutine, vous devez d’abord fournir une déclaration de fonction requise par SDV et d’autres outils de vérification, comme suit :
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
Ensuite, implémentez votre fonction de rappel comme suit :
VOID
MyCompletionRoutine (
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{...}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfrequest.h (inclure Wdf.h) |
IRQL | <=DISPATCH_LEVEL |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour