Partager via


structure FLT_OPERATION_REGISTRATION (fltkernel.h)

La structure FLT_OPERATION_REGISTRATION est utilisée pour inscrire des routines de rappel d’opération.

Syntaxe

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

Membres

MajorFunction

Code de fonction principale spécifiant le type d’opération d’E/S. Ce membre est obligatoire et ne peut pas être NULL. Pour plus d’informations sur les opérations supplémentaires, consultez FLT_PARAMETERS.

Flags

Masque de bits des indicateurs spécifiant quand appeler les routines de rappel de préopération (PFLT_PRE_OPERATION_CALLBACK) et de post-opération (PFLT_POST_OPERATION_CALLBACK) pour les opérations d’E/S ou de pagination mises en cache. Ce membre est facultatif et peut être égal à zéro.

Indicateur Description
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Un minifiltre définit cet indicateur pour les opérations de lecture ou d’écriture afin de spécifier que ses routines de rappel de préopération et de post-opération ne doivent pas être appelées pour les opérations d’E/S de pagination. Cet indicateur s’applique uniquement aux opérations d’E/S basées sur IRP. Il est ignoré pour les opérations d’E/S qui ne sont pas basées sur IRP.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) Un minifiltre définit cet indicateur pour les opérations de lecture ou d’écriture afin de spécifier que ses routines de rappel de préopération et de post-opération ne doivent pas être appelées pour les opérations d’E/S mises en cache. Cet indicateur s’applique aux E/S rapides ainsi qu’aux lectures et écritures basées sur IRP, car toutes les E/S rapides sont mises en cache.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) Un minifiltre définit cet indicateur afin que toutes les opérations émises sur un handle de volume non-DASD soient ignorées. Notez que le rappel du minifilter pour cette opération sera contourné.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) Un minifiltre définit cet indicateur afin que les opérations de lecture ou d’écriture qui ne sont pas mises en cache ni la pagination soient ignorées. Notez que le rappel du minifilter pour cette opération sera contourné. Cet indicateur s’applique uniquement aux requêtes IRP_MJ_READ et IRP_MJ_WRITE.

PreOperation

Pointeur vers une routine PFLT_PRE_OPERATION_CALLBACK à inscrire en tant que routine de rappel de préopération pour ce type d’opération d’E/S. Ce membre est facultatif et peut être NULL.

PostOperation

Pointeur vers une routine de type PFLT_POST_OPERATION_CALLBACK à inscrire en tant que routine de rappel après opération pour ce type d’opération d’E/S. Ce membre est facultatif et peut être NULL.

Reserved1

Réservé pour le système. Les minifilters doivent définir ce membre sur NULL.

Remarques

Lorsqu’un minifiltre appelle FltRegisterFilter à partir de sa routine DriverEntry , il peut inscrire une routine de rappel de préopération (PFLT_PRE_OPERATION_CALLBACK) et une routine de rappel postopération (PFLT_POST_OPERATION_CALLBACK) pour chaque type d’opération d’E/S qu’il doit gérer.

Pour inscrire ces routines de rappel, le minifilter crée un tableau de longueur variable de structures FLT_OPERATION_REGISTRATION et stocke un pointeur vers le tableau dans le membre OperationRegistration de la structure FLT_REGISTRATION que le minifilter transmet en tant que paramètre Registration de FltRegisterFilter. Le dernier élément de ce tableau doit être {IRP_MJ_OPERATION_END}.

Le minifiltre doit créer une structure FLT_OPERATION_REGISTRATION distincte pour chaque type d’opération d’E/S qu’il gère. Dans cette structure, le minifilter spécifie les points d’entrée de ses routines de rappel dans les membres PreOperation et PostOperation de la structure.

Un minifiltre peut inscrire une routine de rappel de préopération pour un type donné d’opération d’E/S sans inscrire de rappel de postopération et vice versa.

Les systèmes de fichiers ne reçoivent pas de demandes IRP_MJ_POWER ou IRP_MJ_DEVICE_CHANGE. Les minifiltres ne peuvent pas inscrire des routines de rappel de préopération ou de post-opération pour ces opérations.

Un minifiltre ne peut pas inscrire une routine de rappel après opération pour IRP_MJ_SHUTDOWN.

Une seule routine de rappel de préopération ou de post-opération peut être utilisée pour traiter plusieurs types d’opérations d’E/S. Toutefois, la routine de rappel doit être inscrite séparément pour chaque type d’opération d’E/S.

Configuration requise

Condition requise Valeur
En-tête fltkernel.h (inclure Fltkernel.h)

Voir aussi

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK