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