Fonction FltCbdqDisable (fltkernel.h)
FltCbdqDisable désactive la file d’attente de données de rappel d’un pilote minifilter.
Syntaxe
VOID FLTAPI FltCbdqDisable(
[in, out] PFLT_CALLBACK_DATA_QUEUE Cbdq
);
Paramètres
[in, out] Cbdq
Pointeur vers la file d’attente de données de rappel.
Valeur de retour
None
Remarques
FltCbdqDisable désactive une file d’attente de données de rappel afin qu’aucun autre élément ne puisse y être ajouté.
Les pilotes Minifilter peuvent utiliser les routines FltCbdqXxx pour implémenter une file d’attente de données de rappel pour les opérations d’E/S basées sur IRP. En utilisant ces routines, les pilotes minifilter peuvent rendre leurs files d’attente cancel-safe ; le système gère en toute transparence l’annulation des E/S pour les pilotes minifilter.
Les routines FltCbdqXxx ne peuvent être utilisées que pour les opérations d’E/S basées sur IRP. Pour déterminer si une structure de données de rappel donnée représente une opération d’E/S basée sur IRP, utilisez la macro FLT_IS_IRP_OPERATION .
Un pilote minifilter appelle normalement FltCbdqDisable pendant instance démontage ou le déchargement du pilote minifilter. Après avoir appelé cette routine, le pilote minifilter doit vider ou vider la file d’attente. Pour ce faire, appelez FltCbdqRemoveNextIo à plusieurs reprises jusqu’à ce qu’il ne reste plus d’éléments dans la file d’attente.
Pour plus d’informations sur la création d’une file d’attente de données de rappel, consultez FltCbdqInitialize . Utilisez FltCbdqInsertIo pour ajouter une demande d’E/S à la file d’attente. Utilisez FltCbdqRemoveIo pour supprimer une requête d’E/S particulière de la file d’attente, ou FltCbdqRemoveNextIo pour supprimer la requête d’E/S disponible suivante.
Pour réactiver la file d’attente après l’avoir désactivée, appelez FltCbdqEnable.
Si la file d’attente est protégée par un verrou de rotation plutôt qu’un objet mutex ou une variable de ressource, l’appelant de FltCbdqDisable peut s’exécuter sur IRQL <= DISPATCH_LEVEL. Si un mutex ou une ressource est utilisé, l’appelant doit s’exécuter sur IRQL <= APC_LEVEL.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | fltkernel.h (inclure Fltkernel.h) |
IRQL | Consultez la section Notes. |