Partager via


Fonction FltSetCancelCompletion (fltkernel.h)

Un pilote de minifiltre appelle FltSetCancelCompletion pour spécifier une routine d’annulation à appeler si une opération d’E/S donnée est annulée.

Syntaxe

NTSTATUS FLTAPI FltSetCancelCompletion(
  [in] PFLT_CALLBACK_DATA              CallbackData,
  [in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);

Paramètres

[in] CallbackData

Pointeur vers la structure de 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 filtres 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
      );

CallbackData

Pointeur vers la structure FLT_CALLBACK_DATA pour l’opération d’E/S.

Valeur retournée

FltSetCancelCompletion retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée.

Remarques

FltSetCancelCompletion spécifie une routine d’annulation pour une opération d’E/S basée sur IRP qui doit être publiée 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 qui doit être publiée dans une file d’attente de données de rappel à l’aide des routines FltCbdqXxx .

Le Gestionnaire de filtres appelle la routine CanceledCallback sans tenir le verrou de rotation d’annulation du système ou effectuer toute 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.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Voir aussi

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem