FLT_CONTEXT_REGISTRATION struttura (fltkernel.h)

La struttura FLT_CONTEXT_REGISTRATION viene usata per registrare i tipi di contesto.

Sintassi

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;

Members

ContextType

Tipo di contesto. Questo membro è obbligatorio e deve essere uno dei valori seguenti:

FLT_FILE_CONTEXT (solo Windows Vista e versioni successive).

FLT_INSTANCE_CONTEXT

FLT_STREAM_CONTEXT

FLT_STREAMHANDLE_CONTEXT

FLT_SECTION_CONTEXT (solo Windows 8 e versioni successive).

FLT_TRANSACTION_CONTEXT (solo Windows Vista e versioni successive).

FLT_VOLUME_CONTEXT

Flags

Maschera di flag che specificano come il gestore filtri alloca un nuovo contesto da un elenco lookaside di contesti di dimensioni fisse. Questo membro può essere zero o il valore seguente.

Contrassegno Significato
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH Se il minifilter usa contesti di dimensioni fisse e questo flag viene specificato, la gestione filtri alloca un contesto dall'elenco lookaside se la dimensione del contesto nell'elenco lookaside è maggiore o uguale alla dimensione richiesta. In caso contrario, la gestione filtri alloca un contesto dall'elenco lookaside solo se le dimensioni del contesto nell'elenco lookaside sono uguali alle dimensioni richieste.

ContextCleanupCallback

Puntatore a una routine contextCleanupCallback definita dal minifilter di tipo PFLT_CONTEXT_CLEANUP_CALLBACK. Gestione filtri chiama questa routine immediatamente prima di eliminare il contesto. Se il minifilter non ha memoria o puntatori da pulire all'interno del contesto, questo membro è facoltativo e può essere NULL.

Size

Le dimensioni, in byte, della parte definita dal minifilter del contesto, se il minifilter usa contesti di dimensioni fisse. Zero è un valore di dimensione valido. Se il minifilter usa contesti di dimensione variabile, questo membro è obbligatorio e deve essere impostato su FLT_VARIABLE_SIZED_CONTEXTS.

PoolTag

Valore del tag del pool da usare per il contesto. Questo tag, specificato come stringa di uno a quattro caratteri ASCII a 7 bit, viene visualizzato in qualsiasi dump di arresto anomalo del sistema che si verifica. Se il membro ContextAllocateCallback è NULL, questo membro è obbligatorio e non può essere zero.

ContextAllocateCallback

Puntatore a una routine contextAllocateCallback definita dal minifilter di tipo PFLT_CONTEXT_ALLOCATE_CALLBACK. Questo membro è facoltativo e può essere NULL. Se non è NULL, i membri Size e PoolTag vengono ignorati.

ContextFreeCallback

Puntatore a una routine ContextFreeCallback definita dal minifilter di tipo PFLT_CONTEXT_FREE_CALLBACK. Questo membro è facoltativo e può essere NULL. Se non è NULL, i membri Size e PoolTag vengono ignorati.

Reserved1

Riservato per l'utilizzo nel sistema. I minifilter devono impostare questo membro su NULL.

Commenti

Quando un minifiltro chiama FltRegisterFilter dalla routine DriverEntry , deve registrare ogni tipo di contesto usato.

Per registrare questi tipi di contesto, il minifilter crea una matrice a lunghezza variabile di strutture FLT_CONTEXT_REGISTRATION e archivia un puntatore alla matrice nel membro ContextRegistration della struttura FLT_REGISTRATION che il minifilter passa come parametro Di registrazione di FltRegisterFilter. L'ultimo elemento di questa matrice deve essere {FLT_CONTEXT_END}.

Per ogni tipo di contesto usato dal minifilter, il minifilter deve fornire almeno una struttura FLT_CONTEXT_REGISTRATION, in base alle regole seguenti:

  • Se il minifilter fornisce una struttura di FLT_CONTEXT_REGISTRATION con un membro ContextAllocateCallback non NULL, non può fornire strutture FLT_CONTEXT_REGISTRATION aggiuntive per tale tipo di contesto.
  • Se il minifiltro fornisce due o più strutture FLT_CONTEXT_REGISTRATION identiche, verrà usato solo il primo. Gli altri verranno ignorati.
  • È possibile specificare una sola struttura FLT_CONTEXT_REGISTRATION con un membro Size di FLT_VARIABLE_SIZED_CONTEXTS per ogni tipo di contesto.
  • Non più di tre strutture FLT_CONTEXT_REGISTRATION con un membro Size diverso da FLT_VARIABLE_SIZED_CONTEXTS possono essere fornite per ogni tipo di contesto.

Requisiti

Requisito Valore
Intestazione fltkernel.h (includere Fltkernel.h)

Vedi anche

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK