FltSetCancelCompletion, fonction (fltkernel.h)
Un pilote minifilter appelle FltSetCancelCompletion pour spécifier une routine d’annulation à appeler si une opération d’E/S donnée est annulée.
NTSTATUS FLTAPI FltSetCancelCompletion(
[in] PFLT_CALLBACK_DATA CallbackData,
[in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);
[in] CallbackData
Pointeur vers la structure des données de rappel (FLT_CALLBACK_DATA) pour l’opération d’E/S. L’opération doit être une opération d’E/S basée sur IRP et ne doit pas être une opération d’E/S de pagination. 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. Ce paramètre est obligatoire et ne peut pas être NULL.
[in] CanceledCallback
Pointeur vers une routine d’annulation fournie par l’appelant. Le Gestionnaire de filtre appelle cette routine si l’opération d’E/S représentée par CallbackData est annulée.
Cette routine est déclarée comme suit :
typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
IN PFLT_CALLBACK_DATA CallbackData
);
Pointeur vers la structure FLT_CALLBACK_DATA pour l’opération d’E/S.
FltSetCancelCompletion retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée.
FltSetCancelCompletion spécifie une routine d’annulation pour une opération d’E/S basée sur IRP à publier dans une file d’attente de travail.
Les pilotes minifilter appellent généralement FltSetCancelCompletion pour une opération d’E/S immédiatement avant d’appeler FltQueueDeferredIoWorkItem pour publier l’opération dans une file d’attente de travail.
N’appelez pas FltSetCancelCompletion pour toute opération d’E/S à publier dans une file d’attente de données de rappel sans échec à l’aide des routines FltCbdqXxx.
Le Gestionnaire de filtre appelle la routine CanceledCallback sans conserver le verrou de rotation de l’annulation du système ou effectuer une autre synchronisation. Toute synchronisation requise doit être fournie par le pilote minifilter lui-même.
Pour annuler une opération d’E/S, appelez FltCancelIo.
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | fltkernel.h (include Fltkernel.h) |
bibliothèque | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |