Fonction FltCbdqRemoveNextIo (fltkernel.h)
FltCbdqRemoveNextIo supprime l’élément correspondant suivant dans la file d’attente de données de rappel d’un pilote minifiltre.
Syntaxe
PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
[in, out] PFLT_CALLBACK_DATA_QUEUE Cbdq,
[in, optional] PVOID PeekContext
);
Paramètres
[in, out] Cbdq
Pointeur vers une file d’attente de données de rappel cancel-safe. Cette file d’attente doit avoir été initialisée en appelant FltCbdqInitialize.
[in, optional] PeekContext
Pointeur vers les informations définies par l’appelant qui identifie l’élément correspondant. Ce paramètre est facultatif et peut être NULL.
Valeur retournée
FltCbdqRemoveNextIo retourne un pointeur vers la structure de données de rappel (FLT_CALLBACK_DATA) de l’élément qui a été supprimé de la file d’attente ou NULL si aucun élément correspondant n’a été trouvé. FltCbdqRemoveNextIo retourne uniquement les éléments pour les opérations d’E/S qui n’ont pas encore été annulées.
Remarques
FltCbdqRemoveNextIo supprime l’élément correspondant suivant de la file d’attente de données de rappel d’un pilote minifiltre.
Les pilotes de minifiltre 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 de minifiltre peuvent rendre leurs files d’attente annulées-sécurisées ; le système gère de manière transparente l’annulation des E/S pour les pilotes de minifiltre.
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 (FLT_CALLBACK_DATA) donnée représente une opération d’E/S basée sur IRP, utilisez la macro FLT_IS_IRP_OPERATION .
Une file d’attente de données de rappel est initialisée par FltCbdqInitialize. FltCbdqRemoveNextIo utilise les routines fournies dans la table de répartition de la file d’attente pour verrouiller la file d’attente et supprimer l’élément correspondant suivant de la file d’attente. L’opération de suppression elle-même est effectuée par la routine de rappel CbdqRemoveIo du pilote de minifiltre.
FltCbdqRemoveNextIo utilise la routine de rappel CbdqPeekNextIo de la file d’attente pour analyser la file d’attente à la recherche d’éléments correspondants. Le paramètre PeekContext est passé à la routine de rappel CbdqPeekNextIo pour effectuer une boucle dans les éléments correspondants. La signification de PeekContext et les critères pour qu’un élément corresponde à un PeekContext donné dépendent entièrement du pilote de minifiltre.
Si la file d’attente est protégée par un verrou de rotation au lieu d’un objet mutex ou d’une variable de ressource, l’appelant de FltCbdqRemoveNextIo peut s’exécuter à IRQL <= DISPATCH_LEVEL. Si un mutex ou une ressource est utilisé, l’appelant doit s’exécuter à IRQL <= APC_LEVEL.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | fltkernel.h (inclure Fltkernel.h) |
IRQL | Consultez la section Notes. |