FltCancelIo, fonction (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 des données de rappel (FLT_CALLBACK_DATA) pour l’opération d’E/S.
Valeur de retour
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, 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 terminé 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.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | fltkernel.h (include FltKernel.h) |
bibliothèque | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |