Função IoEnumerateRegisteredFiltersList (ntifs.h)

A rotina IoEnumerateRegisteredFiltersList enumera os drivers de filtro do sistema de arquivos que se registraram no sistema.

Sintaxe

NTSTATUS IoEnumerateRegisteredFiltersList(
  [out] PDRIVER_OBJECT *DriverObjectList,
  [in]  ULONG          DriverObjectListSize,
  [out] PULONG         ActualNumberDriverObjects
);

Parâmetros

[out] DriverObjectList

Um ponteiro para uma matriz alocada pelo chamador que recebe os ponteiros de objeto do driver. Esse parâmetro é opcional e pode ser NULL. (Consulte a seção Comentários a seguir.)

[in] DriverObjectListSize

Tamanho, em bytes, da matriz DriverObjectList . Pode ser zero. (Consulte a seção Comentários a seguir.)

[out] ActualNumberDriverObjects

Número real de objetos de driver encontrados. Observe que, se a matriz em DriverObjectList for muito pequena, o número de ponteiros de objeto de driver copiados para a matriz será menor que ActualNumberDriverObjects.

Retornar valor

IoEnumerateRegisteredFiltersList pode retornar um dos seguintes:

Código de retorno Descrição
STATUS_SUCCESS A chamada para IoEnumerateRegisteredFiltersList foi bem-sucedida.
STATUS_BUFFER_TOO_SMALL A matriz em DriverObjectList é muito pequena para conter toda a lista de objetos de driver. Nesse caso, IoEnumerateRegisteredFiltersList copia o máximo possível de ponteiros de objeto de driver para a matriz.

Comentários

Um driver de filtro do sistema de arquivos chama IoEnumerateRegisteredFiltersList para obter uma matriz de ponteiros para os objetos de driver para todos os drivers de filtro do sistema de arquivos que chamaram IoRegisterFsRegistrationChange.

Os drivers de filtro são enumerados para diminuir a distância do sistema de arquivos base. O primeiro elemento (índice zero) na matriz DriverObjectList representa o filtro anexado mais distante do sistema de arquivos. A segunda entrada é para o filtro mais próximo e assim por diante. A última entrada na matriz é para o filtro mais próximo do sistema de arquivos base.

IoEnumerateRegisteredFiltersList enumera apenas drivers de filtro herdados; ele não enumera minifiltros. Para enumerar minifiltros e filtros herdados ou apenas minifiltros, chame FltEnumerateFilterInformation.

O driver de filtro normalmente chama IoEnumerateRegisteredFiltersList duas vezes: uma para obter o número de objetos de driver na lista e uma vez para obter a própria lista de objetos de driver. Na primeira chamada, o chamador deve definir o parâmetro DriverObjectList como NULL e DriverObjectListSize como zero. Na segunda chamada, DriverObjectList deve conter um ponteiro para uma matriz de ponteiro de tamanho apropriado, e DriverObjectListSize deve conter o tamanho, em bytes, dessa matriz.

IoEnumerateRegisteredFiltersList incrementa a contagem de referência em cada objeto de driver na lista apontado por DriverObjectList. Portanto, cada chamada bem-sucedida para IoEnumerateRegisteredFiltersList deve ser correspondida por uma chamada subsequente para ObDereferenceObject para cada objeto de driver na lista. Não fazer isso impede que o sistema libere ou exclua esses objetos de driver devido a uma contagem de referência pendente.

Os minifiltros devem chamar FltEnumerateFilterInformation ou FltEnumerateFilters em vez de IoEnumerateRegisteredFiltersList.

Requisitos

Requisito Valor
Cliente mínimo com suporte Pacote cumulativo de atualizações para Windows 2000 SP4; Windows Server 2003 SP1
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Confira também

FltEnumerateFilterInformation

FltEnumerateFilters

IoRegisterFsRegistrationChange

ObDereferenceObject