estrutura FLT_CONTEXT_REGISTRATION (fltkernel.h)

A estrutura FLT_CONTEXT_REGISTRATION é usada para registrar tipos de contexto.

Sintaxe

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;

Membros

ContextType

O tipo de contexto. Esse membro é necessário e deve ser um dos seguintes valores:

FLT_FILE_CONTEXT (somente Windows Vista e posterior.)

FLT_INSTANCE_CONTEXT

FLT_STREAM_CONTEXT

FLT_STREAMHANDLE_CONTEXT

FLT_SECTION_CONTEXT (somente Windows 8 e posterior.)

FLT_TRANSACTION_CONTEXT (somente Windows Vista e posterior.)

FLT_VOLUME_CONTEXT

Flags

Uma máscara de bits de sinalizadores que especifica como o gerenciador de filtros aloca um novo contexto de uma lista lookaside de contextos de tamanho fixo. Esse membro pode ser zero ou o valor a seguir.

Sinalizador Significado
FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH Se o minifiltro usar contextos de tamanho fixo e esse sinalizador for especificado, o gerenciador de filtros alocará um contexto da lista lookaside se o tamanho do contexto na lista lookaside for maior ou igual ao tamanho solicitado. Caso contrário, o gerenciador de filtros alocará um contexto da lista lookaside somente se o tamanho do contexto na lista lookaside for igual ao tamanho solicitado.

ContextCleanupCallback

Um ponteiro para uma rotina ContextCleanupCallback definida por minifiltro do tipo PFLT_CONTEXT_CLEANUP_CALLBACK. O gerenciador de filtros chama essa rotina imediatamente antes de excluir o contexto. Se o minifiltro não tiver memória ou ponteiros para limpo dentro do contexto, esse membro será opcional e poderá ser NULL.

Size

O tamanho, em bytes, da parte definida por minifiltro do contexto, se o minifiltro usar contextos de tamanho fixo. Zero é um valor de tamanho válido. Se o minifiltro usar contextos de tamanho variável, esse membro será necessário e deverá ser definido como FLT_VARIABLE_SIZED_CONTEXTS.

PoolTag

Um valor de marca de pool a ser usado para o contexto. Essa marca, que é especificada como uma cadeia de caracteres de um a quatro caracteres ASCII de 7 bits, aparece em qualquer despejo de falha do sistema que ocorre. Se o membro ContextAllocateCallback for NULL, esse membro será necessário e não poderá ser zero.

ContextAllocateCallback

Ponteiro para uma rotina ContextAllocateCallback definida por minifiltro do tipo PFLT_CONTEXT_ALLOCATE_CALLBACK. Esse membro é opcional e pode ser NULL. Se não for NULL, os membros Size e PoolTag serão ignorados.

ContextFreeCallback

Um ponteiro para uma rotina ContextFreeCallback definida por minifiltro do tipo PFLT_CONTEXT_FREE_CALLBACK. Esse membro é opcional e pode ser NULL. Se não for NULL, os membros Size e PoolTag serão ignorados.

Reserved1

Reservado para uso do sistema. Os minifiltros devem definir esse membro como NULL.

Comentários

Quando um minifiltro chama FltRegisterFilter de sua rotina DriverEntry , ele deve registrar cada tipo de contexto que usa.

Para registrar esses tipos de contexto, o minifiltro cria uma matriz de comprimento variável de estruturas FLT_CONTEXT_REGISTRATION e armazena um ponteiro para a matriz no membro ContextRegistration da estrutura FLT_REGISTRATION que o minifiltro passa como o parâmetro Registration de FltRegisterFilter. O último elemento dessa matriz deve ser {FLT_CONTEXT_END}.

Para cada tipo de contexto que o minifiltro usa, o minifiltro deve fornecer pelo menos uma estrutura FLT_CONTEXT_REGISTRATION, de acordo com as seguintes regras:

  • Se o minifiltro fornecer uma estrutura FLT_CONTEXT_REGISTRATION com um membro ContextAllocateCallback não NULL, ele não poderá fornecer nenhuma estrutura de FLT_CONTEXT_REGISTRATION adicional para esse tipo de contexto.
  • Se o minifiltro fornecer duas ou mais estruturas de FLT_CONTEXT_REGISTRATION idênticas, somente a primeira será usada. Os outros serão ignorados.
  • Apenas um FLT_CONTEXT_REGISTRATION estrutura com um membro Size de FLT_VARIABLE_SIZED_CONTEXTS pode ser fornecido para cada tipo de contexto.
  • Não é possível fornecer mais de três estruturas de FLT_CONTEXT_REGISTRATION com um membro Size diferente de FLT_VARIABLE_SIZED_CONTEXTS para cada tipo de contexto.

Requisitos

Requisito Valor
Cabeçalho fltkernel.h (inclua Fltkernel.h)

Confira também

FLT_REGISTRATION

FltRegisterFilter

PFLT_CONTEXT_ALLOCATE_CALLBACK

PFLT_CONTEXT_CLEANUP_CALLBACK

PFLT_CONTEXT_FREE_CALLBACK