Fonction FltCancelIo (fltkernel.h)
La routine FltCancelIo annule une opération d’E/S.
Syntaxe
BOOLEAN FLTAPI FltCancelIo(
[in] PFLT_CALLBACK_DATA CallbackData
);
Paramètres
[in] CallbackData
Pointeur vers la structure de données de rappel (FLT_CALLBACK_DATA) pour l’opération d’E/S.
Valeur retournée
FltCancelIo retourne TRUE si l’opération d’E/S a été annulée avec succès. Sinon, elle retourne FALSE.
Remarques
Un pilote minifilter qui lance une opération d’E/S en appelant une routine telle que FltPerformAsynchronousIo peut annuler l’opération en appelant FltCancelIo. L’opération doit être une opération d’E/S basée sur IRP, elle ne doit pas être actuellement publiée dans la propre file d’attente de travail du pilote minifilter, et elle ne doit pas avoir été terminée.
Si l’IRP a une routine d’annulation, FltCancelIo définit le bit d’annulation de l’IRP et appelle la routine d’annulation.
Si l’IRP n’a pas de routine d’annulation et que, par conséquent, l’IRP n’est pas annulable, FltCancelIo définit le bit d’annulation de l’IRP et retourne FALSE. L’IRP doit être annulé ultérieurement lorsqu’il devient annulable.
Si un pilote minifilter qui n’a pas lancé l’opération d’E/S basée sur IRP appelle FltCancelIo, les résultats sont imprévisibles. Par exemple, l’IRP peut être effectué avec un code NTSTATUS réussi même si son bit d’annulation a été défini.
FltCancelIo retourne FALSE si l’une des conditions suivantes est remplie :
- L’opération n’est pas une opération d’E/S basée sur IRP.
- Aucune routine d’annulation n’est spécifiée pour l’opération d’E/S.
- L’opération d’E/S a déjà été annulée.
Pour spécifier une routine d’annulation pour une opération d’E/S, appelez FltSetCancelCompletion.
Pour effacer une routine d’annulation définie pour une opération d’E/S, appelez FltClearCancelCompletion.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | fltkernel.h (incluez FltKernel.h) |
Bibliothèque | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |