Compartilhar via


estrutura FLT_OPERATION_REGISTRATION (fltkernel.h)

A estrutura FLT_OPERATION_REGISTRATION é usada para registrar rotinas de retorno de chamada de operação.

Sintaxe

typedef struct _FLT_OPERATION_REGISTRATION {
  UCHAR                            MajorFunction;
  FLT_OPERATION_REGISTRATION_FLAGS Flags;
  PFLT_PRE_OPERATION_CALLBACK      PreOperation;
  PFLT_POST_OPERATION_CALLBACK     PostOperation;
  PVOID                            Reserved1;
} FLT_OPERATION_REGISTRATION, *PFLT_OPERATION_REGISTRATION;

Membros

MajorFunction

Código de função principal especificando o tipo de operação de E/S. Esse membro é necessário e não pode ser NULL. Para obter mais informações sobre operações adicionais, consulte FLT_PARAMETERS.

Flags

Máscara de bits de sinalizadores especificando quando chamar as rotinas de retorno de chamada de E/S armazenados em cache (PFLT_PRE_OPERATION_CALLBACK) e postoperation (PFLT_POST_OPERATION_CALLBACK) para operações de E/S de E/S armazenadas em cache ou paginação. Esse membro é opcional e pode ser zero.

Bandeira Descrição
FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO (0x00000001) Um minifiltro define esse sinalizador para operações de leitura ou gravação para especificar que suas rotinas de retorno de chamada de pré-operação e de operação de operação não devem ser chamadas para operações de E/S de paginação. Esse sinalizador se aplica somente a operações de E/S baseadas em IRP. Ele é ignorado para operações de E/S que não são baseadas em IRP.
FLTFL_OPERATION_REGISTRATION_SKIP_CACHED_IO (0x00000002) Um minifiltro define esse sinalizador para operações de leitura ou gravação para especificar que suas rotinas de retorno de chamada de pré-operação e postoperation não devem ser chamadas para operações de E/S armazenadas em cache. Esse sinalizador se aplica a E/S rápida, bem como leituras e gravações baseadas em IRP, pois toda E/S rápida é armazenada em cache.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_DASD_IO (0x00000004) Um minifiltro define esse sinalizador para que todas as operações de emitidas em um identificador de volume não DASD sejam ignoradas. Observe que o retorno de chamada do minifiltro para esta operação será ignorado.
FLTFL_OPERATION_REGISTRATION_SKIP_NON_CACHED_NON_PAGING_IO (0x00000008) Um minifiltro define esse sinalizador para que as operações de leitura ou gravação que não são armazenadas em cache nem paginação sejam ignoradas. Observe que o retorno de chamada do minifiltro para esta operação será ignorado. Esse sinalizador é relevante apenas para solicitações IRP_MJ_READ e IRP_MJ_WRITE.

PreOperation

Ponteiro para uma rotina de tipo PFLT_PRE_OPERATION_CALLBACKa ser registrada como a rotina de retorno de chamada de pré-operação para esse tipo de operação de E/S. Esse membro é opcional e pode ser NULL.

PostOperation

Ponteiro para uma rotina de tipo de PFLT_POST_OPERATION_CALLBACKa ser registrada como a rotina de retorno de chamada de postoperation para esse tipo de operação de E/S. Esse membro é opcional e pode ser NULL.

Reserved1

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

Observações

Quando um minifiltro chama FltRegisterFilter de sua rotina deDriverEntry, ele pode registrar uma rotina de retorno de chamada de pré-operação (PFLT_PRE_OPERATION_CALLBACK) e uma rotina de retorno de chamada de postoperação (PFLT_POST_OPERATION_CALLBACK) para cada tipo de operação de E/S que ele deve manipular.

Para registrar essas rotinas de retorno de chamada, o minifiltro cria uma matriz de comprimento variável de estruturas de FLT_OPERATION_REGISTRATION e armazena um ponteiro para a matriz no operationRegistration membro da estrutura FLT_REGISTRATION que o minifiltro passa como o parâmetro de Registro de FltRegisterFilter . O último elemento dessa matriz deve ser {IRP_MJ_OPERATION_END}.

O minifiltro deve criar uma estrutura FLT_OPERATION_REGISTRATION separada para cada tipo de operação de E/S que ele manipula. Nessa estrutura, o minifiltro especifica os pontos de entrada de suas rotinas de retorno de chamada nos de Pré-Operação da estrutura e membros do PostOperation.

Um minifiltro pode registrar uma rotina de retorno de chamada de pré-operação para um determinado tipo de operação de E/S sem registrar um retorno de chamada de postoperation e vice-versa.

Os sistemas de arquivos não recebem solicitações de IRP_MJ_POWER ou IRP_MJ_DEVICE_CHANGE. Os minifiltros não podem registrar rotinas de retorno de chamada de pré-operação ou de operação de operação para essas operações.

Um minifiltro não pode registrar uma rotina de retorno de chamada de postoperation para IRP_MJ_SHUTDOWN.

Uma única rotina de retorno de chamada de pré-operação ou postoperation pode ser usada para processar mais de um tipo de operação de E/S. No entanto, a rotina de retorno de chamada deve ser registrada separadamente para cada tipo de operação de E/S.

Requisitos

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

Consulte também

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK