Noções básicas sobre enumerações de volume com nomes de volume duplicados

Ao enumerar volumes, é possível que nomes de volume duplicados apareçam em uma lista de informações de volume resultante.

Para ajudar a entender por que isso pode ocorrer, considere o seguinte cenário: a rotina de enumeração de volume FltEnumerateVolumeInformation é usada para enumerar todos os volumes do sistema. Isso resulta em um buffer cheio de estruturas de informações de volume – uma para cada volume conhecido como gerenciador de filtros. Nesse buffer, cada estrutura de informações de volume pode ser do tipo FILTER_VOLUME_BASIC_INFORMATION ou FILTER_VOLUME_STANDARD_INFORMATION, mas não ambos.

Dada essa lista de estruturas de informações de volume, é possível que vários elementos de lista contenham o mesmo nome de volume. Ou seja, os membros FilterVolumeName de dois ou mais elementos de lista podem ser idênticos. Isso é possível porque todas as rotinas de enumeração do gerenciador de filtros, como FltEnumerateVolumes, enumeram volumes incluindo aqueles que foram desmontados, mas não foram derrubados (devido ao fato de que os arquivos abertos ainda existem no volume). Assim, quando um volume se torna desmontado, seu nome pode aparecer mais de uma vez em uma lista de informações de volume - uma vez para seu estado montado atual e uma vez para seu estado anterior desmontado, mas não dividido, no caso mais simples.

Se nomes de volume duplicados aparecerem em uma lista de informações de volume, cada grupo de nomes idênticos será explicado pela descrição acima. No entanto, é possível confirmar o cenário acima usando os seguintes procedimentos:

  • Se a lista for preenchida com estruturas do tipo FILTER_VOLUME_STANDARD_INFORMATION, identifique um grupo de estruturas cujos membros FilterVolumeName são iguais. Se uma ou mais estruturas desse grupo tiverem o sinalizador FLTFL_VSI_DETACHED_VOLUME definido em seu membro Flags , o volume associado ao grupo estava em um estado desmontado, mas não dividido. Isso confirma por que existem nomes de volume duplicados. Repita este procedimento para todos esses grupos restantes, se aplicável.

  • Se a lista for preenchida com estruturas do tipo FILTER_VOLUME_BASIC_INFORMATION, converta essa lista em seu formato de estrutura de FILTER_VOLUME_STANDARD_INFORMATION equivalente e prossiga como no ponto de marcador anterior.

Nota A estrutura FILTER_VOLUME_STANDARD_INFORMATION só está disponível a partir do Windows Vista.

Rotinas e estruturas afetadas por este tópico incluem o seguinte:

FILTER_VOLUME_BASIC_INFORMATION

FILTER_VOLUME_STANDARD_INFORMATION

FilterVolumeFindFirst

FilterVolumeFindNext

FltEnumerateVolumeInformation

FltEnumerateVolumes

FltGetVolumeInformation