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 que especifica 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

Bitmask de sinalizadores que especificam quando chamar as rotinas de retorno de chamada de pré-operação (PFLT_PRE_OPERATION_CALLBACK) e postoperation (PFLT_POST_OPERATION_CALLBACK) para operações de E/S armazenadas em cache ou de E/S de paginação. Esse membro é opcional e pode ser zero.

Sinalizador 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 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 operação de operação 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 porque 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 emitidas em um identificador de volume não DASD sejam ignoradas. Observe que o retorno de chamada do minifiltro para essa 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 essa operação será ignorado. Esse sinalizador é relevante apenas para solicitações de IRP_MJ_READ e IRP_MJ_WRITE.

PreOperation

Ponteiro para uma rotina de tipo PFLT_PRE_OPERATION_CALLBACK a 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 PFLT_POST_OPERATION_CALLBACK a 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.

Comentários

Quando um minifiltro chama FltRegisterFilter de sua rotina DriverEntry , 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 postoperation (PFLT_POST_OPERATION_CALLBACK) para cada tipo de operação de E/S que deve manipular.

Para registrar essas rotinas de retorno de chamada, o minifiltro cria uma matriz de comprimento variável de estruturas FLT_OPERATION_REGISTRATION e armazena um ponteiro para a matriz no membro OperationRegistration da estrutura FLT_REGISTRATION que o minifiltro passa como o parâmetro Registration 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 membros PreOperation e PostOperation da estrutura.

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

Confira também

FLT_REGISTRATION

FltRegisterFilter

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK