Partager via


structure FLT_CONTEXT_REGISTRATION (fltkernel.h)

La structure FLT_CONTEXT_REGISTRATION est utilisée pour inscrire les types de contexte.

Syntaxe

typedef struct _FLT_CONTEXT_REGISTRATION {
  FLT_CONTEXT_TYPE               ContextType;
  FLT_CONTEXT_REGISTRATION_FLAGS Flags;
  PFLT_CONTEXT_CLEANUP_CALLBACK  ContextCleanupCallback;
  SIZE_T                         Size;
  ULONG                          PoolTag;
  PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
  PFLT_CONTEXT_FREE_CALLBACK     ContextFreeCallback;
  PVOID                          Reserved1;
} FLT_CONTEXT_REGISTRATION, *PFLT_CONTEXT_REGISTRATION;

Membres

ContextType

Type de contexte. Ce membre est obligatoire et doit être l’une des valeurs suivantes :

FLT_FILE_CONTEXT (Windows Vista et versions ultérieures uniquement))

FLT_INSTANCE_CONTEXT

FLT_STREAM_CONTEXT

FLT_STREAMHANDLE_CONTEXT

FLT_SECTION_CONTEXT (Windows 8 et versions ultérieures uniquement.)

FLT_TRANSACTION_CONTEXT (Windows Vista et versions ultérieures uniquement).)

FLT_VOLUME_CONTEXT

Flags

Masque de bits d’indicateurs qui spécifient la façon dont le gestionnaire de filtres alloue un nouveau contexte à partir d’une liste de modèles de contextes de taille fixe. Ce membre peut être égal à zéro ou à la valeur suivante.

Indicateur Signification
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH Si le minifiltre utilise des contextes de taille fixe et que cet indicateur est spécifié, le gestionnaire de filtres alloue un contexte à partir de la liste de recherche si la taille du contexte dans la liste de recherche est supérieure ou égale à la taille demandée. Sinon, le gestionnaire de filtres alloue un contexte à partir de la liste de recherche uniquement si la taille du contexte dans la liste de recherche est égale à la taille demandée.

ContextCleanupCallback

Pointeur vers une routine ContextCleanupCallback définie par minifiltre de type PFLT_CONTEXT_CLEANUP_CALLBACK. Le gestionnaire de filtres appelle cette routine immédiatement avant qu’elle ne supprime le contexte. Si le minifiltre n’a pas de mémoire ou de pointeur pour propre à l’intérieur du contexte, ce membre est facultatif et peut avoir la valeur NULL.

Size

Taille, en octets, de la partie définie par le minifiltre du contexte, si le minifiltre utilise des contextes de taille fixe. Zéro est une valeur de taille valide. Si le minifiltre utilise des contextes de taille variable, ce membre est obligatoire et doit être défini sur FLT_VARIABLE_SIZED_CONTEXTS.

PoolTag

Valeur d’étiquette de pool à utiliser pour le contexte. Cette balise, qui est spécifiée sous la forme d’une chaîne d’un à quatre caractères ASCII 7 bits, apparaît dans tout vidage sur incident du système qui se produit. Si le membre ContextAllocateCallback a la valeur NULL, ce membre est obligatoire et ne peut pas être égal à zéro.

ContextAllocateCallback

Pointeur vers une routine ContextAllocateCallback définie par minifiltre de type PFLT_CONTEXT_ALLOCATE_CALLBACK. Ce membre est facultatif et peut avoir la valeur NULL. S’il n’est pas NULL, les membres Size et PoolTag sont ignorés.

ContextFreeCallback

Pointeur vers une routine ContextFreeCallback définie par minifiltre de type PFLT_CONTEXT_FREE_CALLBACK. Ce membre est facultatif et peut avoir la valeur NULL. S’il n’est pas NULL, les membres Size et PoolTag sont ignorés.

Reserved1

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

Remarques

Lorsqu’un minifiltre appelle FltRegisterFilter à partir de sa routine DriverEntry , il doit inscrire chaque type de contexte qu’il utilise.

Pour inscrire ces types de contexte, le minifiltre crée un tableau de longueur variable de structures FLT_CONTEXT_REGISTRATION et stocke un pointeur vers le tableau dans le membre ContextRegistration de la structure FLT_REGISTRATION que le minifiltre transmet comme paramètre Registration de FltRegisterFilter. Le dernier élément de ce tableau doit être {FLT_CONTEXT_END}.

Pour chaque type de contexte utilisé par le minifiltre, le minifiltre doit fournir au moins une structure FLT_CONTEXT_REGISTRATION, conformément aux règles suivantes :

  • Si le minifiltre fournit une structure FLT_CONTEXT_REGISTRATION avec un membre ContextAllocateCallback non NULL, il ne peut pas fournir de structures FLT_CONTEXT_REGISTRATION supplémentaires pour ce type de contexte.
  • Si le minifiltre fournit au moins deux structures FLT_CONTEXT_REGISTRATION identiques, seule la première sera utilisée. Les autres seront ignorés.
  • Une seule structure FLT_CONTEXT_REGISTRATION avec un membre Size de FLT_VARIABLE_SIZED_CONTEXTS peut être fournie pour chaque type de contexte.
  • Pas plus de trois structures FLT_CONTEXT_REGISTRATION avec un membre Size autre que FLT_VARIABLE_SIZED_CONTEXTS peuvent être fournies pour chaque type de contexte.

Configuration requise

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

Voir aussi

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK