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