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