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 |