estructura FLT_CONTEXT_REGISTRATION (fltkernel.h)
La estructura FLT_CONTEXT_REGISTRATION se usa para registrar tipos de contexto.
Sintaxis
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;
Miembros
ContextType
Tipo de contexto. Este miembro es obligatorio y debe ser uno de los siguientes valores:
FLT_FILE_CONTEXT (solo Windows Vista y versiones posteriores).
FLT_INSTANCE_CONTEXT
FLT_STREAM_CONTEXT
FLT_STREAMHANDLE_CONTEXT
FLT_SECTION_CONTEXT (solo Windows 8 y versiones posteriores).
FLT_TRANSACTION_CONTEXT (solo Windows Vista y versiones posteriores).
FLT_VOLUME_CONTEXT
Flags
Máscara de bits de marcas que especifican cómo el administrador de filtros asigna un nuevo contexto a partir de una lista de contextos de tamaño fijo. Este miembro puede ser cero o el siguiente valor.
Marca | Significado |
---|---|
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | Si el minifiltro usa contextos de tamaño fijo y se especifica esta marca, el administrador de filtros asigna un contexto de la lista de aspecto si el tamaño del contexto de la lista de lookaside es mayor o igual que el tamaño solicitado. De lo contrario, el administrador de filtros asigna un contexto de la lista de aspecto solo si el tamaño del contexto de la lista de lookaside es igual al tamaño solicitado. |
ContextCleanupCallback
Puntero a una rutina ContextCleanupCallback definida por minifiltro de tipo PFLT_CONTEXT_CLEANUP_CALLBACK. El administrador de filtros llama a esta rutina inmediatamente antes de eliminar el contexto. Si el minifiltro no tiene memoria ni punteros para limpiar dentro del contexto, este miembro es opcional y puede ser NULL.
Size
Tamaño, en bytes, de la parte definida por minifiltro del contexto, si el minifiltro usa contextos de tamaño fijo. Cero es un valor de tamaño válido. Si el minifiltro usa contextos de tamaño variable, se requiere este miembro y debe establecerse en FLT_VARIABLE_SIZED_CONTEXTS.
PoolTag
Valor de etiqueta de grupo que se usará para el contexto. Esta etiqueta, que se especifica como una cadena de uno a cuatro caracteres ASCII de 7 bits, aparece en cualquier volcado de memoria del sistema que se produzca. Si el miembro ContextAllocateCallback es NULL, este miembro es obligatorio y no puede ser cero.
ContextAllocateCallback
Puntero a una rutina ContextAllocateCallback definida por minifiltro de tipo PFLT_CONTEXT_ALLOCATE_CALLBACK. Este miembro es opcional y puede ser NULL. Si no es NULL, se omiten los miembros Size y PoolTag .
ContextFreeCallback
Puntero a una rutina ContextFreeCallback definida por minifiltro de tipo PFLT_CONTEXT_FREE_CALLBACK. Este miembro es opcional y puede ser NULL. Si no es NULL, se omiten los miembros Size y PoolTag .
Reserved1
Reservado para uso del sistema. Los minifiltros deben establecer este miembro en NULL.
Comentarios
Cuando un minifiltro llama a FltRegisterFilter desde su rutina DriverEntry , debe registrar cada tipo de contexto que use.
Para registrar estos tipos de contexto, el minifiltro crea una matriz de longitud variable de FLT_CONTEXT_REGISTRATION estructuras y almacena un puntero a la matriz en el miembro ContextRegistration de la estructura FLT_REGISTRATION que el minifiltro pasa como parámetro Registration de FltRegisterFilter. El último elemento de esta matriz debe ser {FLT_CONTEXT_END}.
Para cada tipo de contexto que use el minifiltro, el minifiltro debe proporcionar al menos una estructura de FLT_CONTEXT_REGISTRATION, según las reglas siguientes:
- Si el minifiltro proporciona una estructura de FLT_CONTEXT_REGISTRATION con un miembro ContextAllocateCallback distinto de NULL, no puede proporcionar estructuras FLT_CONTEXT_REGISTRATION adicionales para ese tipo de contexto.
- Si el minifiltro proporciona dos o más estructuras de FLT_CONTEXT_REGISTRATION idénticas, solo se usará la primera. Los demás se omitirán.
- Solo se puede proporcionar una estructura FLT_CONTEXT_REGISTRATION con un miembro Size de FLT_VARIABLE_SIZED_CONTEXTS para cada tipo de contexto.
- No se pueden proporcionar más de tres estructuras de FLT_CONTEXT_REGISTRATION con un miembro Size distinto de FLT_VARIABLE_SIZED_CONTEXTS para cada tipo de contexto.
Requisitos
Requisito | Valor |
---|---|
Header | fltkernel.h (incluya Fltkernel.h) |