Compartilhar via


Função FltRegisterFilter (fltkernel.h)

FltRegisterFilter registra um driver de minifiltro.

Sintaxe

NTSTATUS FLTAPI FltRegisterFilter(
  [in]  PDRIVER_OBJECT         Driver,
  [in]  const FLT_REGISTRATION *Registration,
  [out] PFLT_FILTER            *RetFilter
);

Parâmetros

[in] Driver

Um ponteiro para o objeto de driver para o driver de minifiltro. Esse deve ser o mesmo ponteiro de objeto de driver que foi passado como entrada para a rotina DriverEntry do driver de minifiltro.

[in] Registration

Um ponteiro para uma estrutura de registro de driver de minifiltro alocado pelo chamador (FLT_REGISTRATION).

[out] RetFilter

Um ponteiro para uma variável alocada pelo chamador que recebe um ponteiro de filtro opaco para o chamador.

Retornar valor

FltRegisterFilter retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_INSUFFICIENT_RESOURCES
FltRegisterFilter encontrou uma falha de alocação de pool. Este é um código de erro.
STATUS_INVALID_PARAMETER
Um dos seguintes:
  • O membro Version da estrutura Registro não foi definido como FLT_REGISTRATION_VERSION.
  • Uma das rotinas de provedor de nomes não NULL na estrutura De registro foi definida como um valor inválido. Os membros GenerateFileNameCallback, NormalizeNameComponentCallback e NormalizeNameComponentExCallback de FLT_REGISTRATION apontam para as rotinas do provedor de nomes.
STATUS_INVALID_PARAMETER é um código de erro.
STATUS_FLT_NOT_INITIALIZED
O Gerenciador de Filtros não foi inicializado quando o filtro tentou se registrar. Verifique se o Gerenciador de Filtros está carregado como um driver. Este é um código de erro.
STATUS_OBJECT_NAME_NOT_FOUND
A chave de serviço de filtro não foi encontrada no Registro.

-ou-

A instância de filtro não está registrada.

Comentários

Cada driver de minifiltro deve chamar FltRegisterFilter de sua rotina DriverEntry para se adicionar à lista global de drivers de minifiltro registrados e fornecer ao Gerenciador de Filtros uma lista de funções de retorno de chamada e outras informações sobre o driver de minifiltro.

FltRegisterFilter retorna um ponteiro de filtro opaco para o driver de minifiltro em *RetFilter. Esse valor de ponteiro identifica exclusivamente o driver de minifiltro e permanece constante desde que o driver de minifiltro seja carregado. O driver de minifiltro deve salvar esse ponteiro, pois ele é um parâmetro necessário para FltStartFiltering e FltUnregisterFilter.

Depois de chamar FltRegisterFilter, um driver de minifiltro normalmente chama FltStartFiltering para começar a filtrar operações de E/S.

Um driver de minifiltro só pode chamar FltRegisterFilter para se registrar, não outro driver de minifiltro.

Para cancelar o registro em si, um driver de minifiltro chama FltUnregisterFilter..

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Confira também

FLT_REGISTRATION

FltStartFiltering

FltUnregisterFilter