Compartilhar via


Função FltEnumerateVolumes (fltkernel.h)

A rotina FltEnumerateVolumes enumera todos os volumes no sistema.

Sintaxe

NTSTATUS FLTAPI FltEnumerateVolumes(
  [in]  PFLT_FILTER Filter,
  [out] PFLT_VOLUME *VolumeList,
  [in]  ULONG       VolumeListSize,
  [out] PULONG      NumberVolumesReturned
);

Parâmetros

[in] Filter

Ponteiro de filtro opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.

[out] VolumeList

Ponteiro para um buffer alocado por chamador que recebe uma matriz de ponteiros de volume opacos. Esse parâmetro é opcional e pode ser NULL se VolumeListSize for zero. Se VolumeListSize for zero na entrada e VolumeList for NULL, NumberVolumesReturned receberá o número de volumes encontrados.

[in] VolumeListSize

Número de ponteiros de filtro opacos que o buffer que VolumeList aponta pode conter. Esse parâmetro é opcional e pode ser zero. Se VolumeListSize for zero na entrada e VolumeList for NULL, NumberVolumesReturned receberá o número de volumes encontrados.

[out] NumberVolumesReturned

Ponteiro para uma variável alocada por chamador que recebe o número de ponteiros de volume opacos retornados na matriz à qual VolumeList aponta. Se VolumeListSize for muito pequeno e volumeList não for NULL na entrada, FltEnumerateVolumes retornará STATUS_BUFFER_TOO_SMALL e definirá NumberVolumesReturned para apontar para o número de volumes encontrados. Esse parâmetro é necessário e não pode ser NULL.

Valor de retorno

FltEnumerateVolumes retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como o seguinte:

Código de retorno Descrição
STATUS_BUFFER_TOO_SMALL
O buffer para o qual o parâmetro VolumeList não é grande o suficiente para armazenar as informações solicitadas. Este é um código de erro.

Observações

Como o conteúdo da lista de volumes do gerenciador de filtros pode ser alterado a qualquer momento, duas chamadas para FltEnumerateVolumes não têm garantia de retornar o mesmo resultado.

FltEnumerateVolumes adiciona uma referência de rundown a cada um dos ponteiros de volume opacos retornados na matriz à qual o VolumeList aponta. Quando esses ponteiros não forem mais necessários, o chamador deverá liberá-los chamando FltObjectDereference em cada um deles. Portanto, cada chamada bem-sucedida para FltEnumerateVolumes deve ser correspondida por uma chamada subsequente para FltObjectDereference para cada ponteiro de volume retornado.

Para converter um ou mais ponteiros de volume opacos retornados pelo parâmetro VolumeList em informações de volume, chame FltGetVolumeInformation.

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

Para enumerar todos os drivers de minifiltro registrados, chame FltEnumerateFilters.

Para enumerar todas as instâncias de driver de minifiltro, chame FltEnumerateInstances.

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

Requisitos

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

Consulte também

FltEnumerateFilters

FltEnumerateInstanceInformationByVolume

FltEnumerateInstances

FltEnumerateVolumeInformation

FltGetVolumeInformation

FltObjectDereference