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 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.

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

Voir aussi

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile