Compartilhar via


Função FltEnumerateFilterInformation (fltkernel.h)

A rotina FltEnumerateFilterInformation fornece informações sobre todos os drivers de filtro registrados (incluindo minifiltro e drivers de filtro herdados) no sistema.

Sintaxe

NTSTATUS FLTAPI FltEnumerateFilterInformation(
  [in]  ULONG                    Index,
  [in]  FILTER_INFORMATION_CLASS InformationClass,
  [out] PVOID                    Buffer,
  [in]  ULONG                    BufferSize,
  [out] PULONG                   BytesReturned
);

Parâmetros

[in] Index

Índice baseado em zero do driver de filtro para o qual as informações são solicitadas. Esse parâmetro identifica o filtro na lista global de drivers de filtro registrados. Se a lista contiver n drivers de filtro, os valores válidos do índice variam de 0 a n-1. Se o valor índice exceder esse intervalo, FltEnumerateFilterInformation retornará STATUS_NO_MORE_ENTRIES.

[in] InformationClass

Tipo de informação solicitada. Esse parâmetro pode ter um dos valores a seguir.

Valor Significado
FilterFullInformation O buffer apontado pelo parâmetro buffer recebe uma estrutura FILTER_FULL_INFORMATION para o driver de minifiltro (drivers de filtro herdados são ignorados).
FilterAggregateBasicInformation O buffer apontado pelo parâmetro Buffer recebe uma estrutura FILTER_AGGREGATE_BASIC_INFORMATION para o minifiltro ou driver de filtro herdado. Esse valor InformationClass está disponível a partir do Microsoft Windows Server 2003 SP1 e do Windows XP SP2 com rollup do gerenciador de filtros. Para obter mais informações sobre o pacote cumulativo do gerenciador de filtros para Windows XP SP2, consulte o artigo 914882"O pacote cumulativo do gerenciador de filtros para o Windows XP SP2", na Base de Dados de Conhecimento da Microsoft.
FilterAggregateStandardInformation O buffer apontado pelo parâmetro buffer recebe uma estrutura FILTER_AGGREGATE_STANDARD_INFORMATION para o minifiltro ou driver de filtro herdado. Esse valor InformationClass está disponível a partir do Windows Vista.

[out] Buffer

Ponteiro para um buffer alocado por chamador que recebe as informações solicitadas. O tipo das informações retornadas no buffer é definido pelo parâmetro InformationClass.

[in] BufferSize

Tamanho, em bytes, do buffer ao qual o Buffer parâmetro aponta. O chamador deve definir esse parâmetro de acordo com o valor informationClass fornecido.

[out] BytesReturned

Ponteiro para uma variável alocada por chamador que recebe o número de bytes retornados no buffer para o qual o Buffer aponta. Se o valor de entrada de BufferSize for muito pequeno, FltEnumerateFilterInformation retornará STATUS_BUFFER_TOO_SMALL e definirá essa variável para o número de bytes necessários para armazenar as informações solicitadas. Esse parâmetro é necessário e não pode ser NULL.

Valor de retorno

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

Código de retorno Descrição
STATUS_BUFFER_TOO_SMALL
O buffer ao qual o buffer de aponta não é grande o suficiente para armazenar as informações solicitadas. Este é um código de erro.
STATUS_FLT_DELETING_OBJECT
Um motorista de minifiltro correspondente foi encontrado, mas está sendo derrubado. Este é um código de erro.
STATUS_INVALID_PARAMETER
Um valor inválido foi especificado para o parâmetro InformationClass. Por exemplo, se FilterAggregateStandardInformation for especificado em sistemas operacionais antes do Windows Vista, a rotina retornará STATUS_INVALID_PARAMETER. Este é um código de erro.
STATUS_NO_MORE_ENTRIES
Não há mais entradas na lista global de drivers de filtro registrados. (O valor do parâmetro índice é maior ou igual ao número de drivers de filtro.) Este é um código de aviso.

Observações

Começando com o Microsoft Windows Server 2003 SP1 e o Windows XP SP2 com rollup do gerenciador de filtros, FltEnumerateFilterInformation fornece informações sobre drivers de filtro do sistema de arquivos (também chamados de "filtros herdados"), bem como drivers de minifiltro. Em versões anteriores do Windows, FltEnumerateFilterInformation fornece apenas informações sobre drivers de minifiltro.

O pseudocódigo a seguir enumera informações de filtro para todos os drivers de filtro registrados.

#define InfoClass FilterAggregateStandardInformation   // Assumes Windows Vista or later operating system.

int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
 Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
 i++;
}

FltEnumerateFilterInformation retorna informações sobre drivers de filtro registrados, por meio do parâmetro do Buffer, para diminuir a distância do sistema de arquivos subjacente. Por exemplo, suponha que haja n drivers de filtro anexados acima de um sistema de arquivos subjacente. As informações sobre o driver de filtro anexado mais distante do sistema de arquivos são retornadas primeiro (com um valor de parâmetro índice de de 0). Informações sobre o driver de filtro anexado mais próximo são retornadas em segundo lugar (com um índice valor de parâmetro de 1) e assim por diante. Por fim, as informações sobre o driver de filtro mais próximo ao sistema de arquivos são retornadas por último (com um valor de parâmetro índice de n-1).

Observação Como os drivers de filtro podem se registrar a qualquer momento, é possível que duas chamadas para FltEnumerateFilterInformation com o mesmo índice não retornem o mesmo resultado.
 
Para enumerar todos os drivers de minifiltro registrados, chame FltEnumerateFilters.

Para enumerar todos os drivers de filtro herdados registrados, chame IoEnumerateRegisteredFiltersList .

Para enumerar todas as instâncias de um determinado driver de minifiltro, chame FltEnumerateInstanceInformationByFilter.

Para enumerar todas as instâncias de driver de minifiltro em um determinado volume, chame FltEnumerateInstanceInformationByVolume.

Para listar informações de volume para todos os volumes que são conhecidos pelo Gerenciador de Filtros, chame FltEnumerateVolumeInformation.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua FltKernel.h)
biblioteca FltMgr.lib
IRQL <= APC_LEVEL

Consulte também

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList