Présentation des énumérations de volumes avec des noms de volumes en double

Lors de l’énumération de volumes, il est possible que les noms de volumes en double apparaissent dans une liste d’informations sur le volume résultant.

Pour comprendre pourquoi cela peut se produire, envisagez le scénario suivant : la routine d’énumération de volume FltEnumerateVolumeInformation est utilisée pour énumérer tous les volumes système. Il en résulte une mémoire tampon remplie de structures d’informations de volume, une pour chaque volume connu du gestionnaire de filtres. Dans cette mémoire tampon, chaque structure d’informations de volume peut être de type FILTER_VOLUME_BASIC_INFORMATION ou FILTER_VOLUME_STANDARD_INFORMATION, mais pas les deux.

Compte tenu de cette liste de structures d’informations sur les volumes, il est possible que plusieurs éléments de liste contiennent le même nom de volume. Autrement dit, les membres FilterVolumeName de deux éléments de liste ou plus peuvent être identiques. Cela est possible parce que toutes les routines d’énumération du gestionnaire de filtres, telles que FltEnumerateVolumes, énumèrent les volumes, y compris ceux qui ont été démontés mais qui n’ont pas été détruits (en raison du fait que des fichiers ouverts existent toujours sur le volume). Ainsi, lorsqu’un volume est démonté, son nom peut apparaître plusieurs fois dans une liste d’informations sur le volume , une fois pour son état monté actuel et une fois pour son état démonté mais non démonté précédemment, dans le cas le plus simple.

Si des noms de volume en double apparaissent dans une liste d’informations sur les volumes, chaque groupe de noms identiques est expliqué par la description ci-dessus. Toutefois, il est possible de confirmer le scénario ci-dessus en utilisant les procédures suivantes :

  • Si la liste est remplie avec des structures de type FILTER_VOLUME_STANDARD_INFORMATION, identifiez un groupe de structures dont les membres FilterVolumeName sont égaux. Si une ou plusieurs structures de ce groupe ont l’indicateur FLTFL_VSI_DETACHED_VOLUME défini dans son membre Flags , le volume associé au groupe était dans un état démonté, mais non détruit. Cela confirme la raison pour laquelle les noms de volume en double existent. Répétez cette procédure pour tous les groupes restants, le cas échéant.

  • Si la liste est remplie avec des structures de type FILTER_VOLUME_BASIC_INFORMATION, convertissez cette liste en son FILTER_VOLUME_STANDARD_INFORMATION forme de structure équivalente et continuez comme dans la puce précédente.

Note La structure FILTER_VOLUME_STANDARD_INFORMATION est disponible uniquement à partir de Windows Vista.

Les routines et structures affectées par cette rubrique sont les suivantes :

FILTER_VOLUME_BASIC_INFORMATION

FILTER_VOLUME_STANDARD_INFORMATION

FilterVolumeFindFirst

FilterVolumeFindNext

FltEnumerateVolumeInformation

FltEnumerateVolumes

FltGetVolumeInformation