GetVolumeInformationA, fonction (fileapi.h)

Récupère des informations sur le système de fichiers et le volume associés au répertoire racine spécifié.

Pour spécifier un handle lors de la récupération de ces informations, utilisez la fonction GetVolumeInformationByHandleW .

Pour récupérer l’état de compression actuel d’un fichier ou d’un répertoire, utilisez FSCTL_GET_COMPRESSION.

Syntaxe

BOOL GetVolumeInformationA(
  [in, optional]  LPCSTR  lpRootPathName,
  [out, optional] LPSTR   lpVolumeNameBuffer,
  [in]            DWORD   nVolumeNameSize,
  [out, optional] LPDWORD lpVolumeSerialNumber,
  [out, optional] LPDWORD lpMaximumComponentLength,
  [out, optional] LPDWORD lpFileSystemFlags,
  [out, optional] LPSTR   lpFileSystemNameBuffer,
  [in]            DWORD   nFileSystemNameSize
);

Paramètres

[in, optional] lpRootPathName

Pointeur vers une chaîne qui contient le répertoire racine du volume à décrire.

Si ce paramètre a la valeur NULL, la racine du répertoire actif est utilisée. Une barre oblique inverse de fin est requise. Par exemple, vous spécifiez \\MyServer\MyShare comme « \\MyServer\MyShare\ », ou le lecteur C comme « C :\ ».

[out, optional] lpVolumeNameBuffer

Pointeur vers une mémoire tampon qui reçoit le nom d’un volume spécifié. La taille de la mémoire tampon est spécifiée par le paramètre nVolumeNameSize .

[in] nVolumeNameSize

Longueur d’une mémoire tampon de nom de volume, en TCHAR. La taille maximale de la mémoire tampon est MAX_PATHs+1.

Ce paramètre est ignoré si la mémoire tampon de nom de volume n’est pas fournie.

[out, optional] lpVolumeSerialNumber

Pointeur vers une variable qui reçoit le numéro de série du volume.

Ce paramètre peut être NULL si le numéro de série n’est pas requis.

Cette fonction retourne le numéro de série du volume attribué par le système d’exploitation lorsqu’un disque dur est formaté. Pour obtenir par programmation le numéro de série du disque dur attribué par le fabricant, utilisez la propriété de Win32_PhysicalMedia Windows Management Instrumentation ( WMI) SerialNumber.

[out, optional] lpMaximumComponentLength

Pointeur vers une variable qui reçoit la longueur maximale, en TCHAR, d’un composant de nom de fichier pris en charge par un système de fichiers spécifié.

Un composant de nom de fichier est la partie d’un nom de fichier entre les barres obliques inverses.

La valeur stockée dans la variable vers laquelle pointe *lpMaximumComponentLength est utilisée pour indiquer qu’un système de fichiers spécifié prend en charge les noms longs. Par exemple, pour un système de fichiers FAT qui prend en charge les noms longs, la fonction stocke la valeur 255, plutôt que l’indicateur 8,3 précédent. Les noms longs peuvent également être pris en charge sur les systèmes qui utilisent le système de fichiers NTFS.

[out, optional] lpFileSystemFlags

Pointeur vers une variable qui reçoit des indicateurs associés au système de fichiers spécifié.

Ce paramètre peut être un ou plusieurs des indicateurs suivants. Toutefois, FILE_FILE_COMPRESSION et FILE_VOL_IS_COMPRESSED s’excluent mutuellement.

Valeur Signification
FILE_CASE_SENSITIVE_SEARCH
0x00000001
Le volume spécifié prend en charge les noms de fichiers respectant la casse.
FILE_CASE_PRESERVED_NAMES
0x00000002
Le volume spécifié prend en charge la casse conservée des noms de fichiers lorsqu’il place un nom sur le disque.
FILE_UNICODE_ON_DISK
0x00000004
Le volume spécifié prend en charge Unicode dans les noms de fichiers tels qu’ils apparaissent sur le disque.
FILE_PERSISTENT_ACLS
0x00000008
Le volume spécifié conserve et applique les listes de contrôle d’accès (ACL). Par exemple, le système de fichiers NTFS conserve et applique les listes de contrôle d’accès, et le système de fichiers FAT ne le fait pas.
FILE_FILE_COMPRESSION
0x00000010
Le volume spécifié prend en charge la compression basée sur les fichiers.
FILE_VOLUME_QUOTAS
0x00000020
Le volume spécifié prend en charge les quotas de disque.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
Le volume spécifié prend en charge les fichiers épars.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
Le volume spécifié prend en charge les points d’analyse.

Refs: ReFS prend en charge les points d’analyse, mais ne les indexe pas, donc FindFirstVolumeMountPoint et FindNextVolumeMountPoint ne fonctionnent pas comme prévu.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
Le système de fichiers prend en charge le stockage distant.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
Lors d’une opération de nettoyage réussie, le système de fichiers retourne des informations qui décrivent les actions supplémentaires effectuées pendant le nettoyage, telles que la suppression du fichier. Les filtres du système de fichiers peuvent examiner ces informations dans leur rappel post-nettoyage.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
Le système de fichiers prend en charge les opérations de suppression et de renommage de style POSIX.
FILE_VOLUME_IS_COMPRESSED
0x00008000
Le volume spécifié est un volume compressé, par exemple un volume DoubleSpace.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
Le volume spécifié prend en charge les identificateurs d’objet.
FILE_SUPPORTS_ENCRYPTION
0x00020000
Le volume spécifié prend en charge le système de fichiers EFS (Encrypted File System). Pour plus d’informations, consultez Chiffrement de fichier.
FILE_NAMED_STREAMS
0x00040000
Le volume spécifié prend en charge les flux nommés.
FILE_READ_ONLY_VOLUME
0x00080000
Le volume spécifié est en lecture seule.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
Le volume spécifié prend en charge une seule écriture séquentielle.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
Le volume spécifié prend en charge les transactions. Pour plus d’informations, consultez À propos de KTM.
FILE_SUPPORTS_HARD_LINKS
0x00400000
Le volume spécifié prend en charge les liens physiques. Pour plus d’informations, consultez Liens physiques et jonctions.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge tant que Windows Server 2008 R2 et Windows 7.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
Le volume spécifié prend en charge les attributs étendus. Un attribut étendu est un élément de métadonnées spécifiques à l’application qu’une application peut associer à un fichier et qui ne fait pas partie des données du fichier.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge tant que Windows Server 2008 R2 et Windows 7.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
Le système de fichiers prend en charge l’ouverture par FileID. Pour plus d’informations, consultez FILE_ID_BOTH_DIR_INFO.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge tant que Windows Server 2008 R2 et Windows 7.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
Le volume spécifié prend en charge les journaux de numéro de séquence de mise à jour (USN). Pour plus d’informations, consultez Modifier les enregistrements Journal.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge tant que Windows Server 2008 R2 et Windows 7.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
Le système de fichiers prend en charge les flux d’intégrité.
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
Le volume spécifié prend en charge le partage de clusters logiques entre des fichiers sur le même volume. Le système de fichiers se réalloue sur les écritures dans des clusters partagés. Indique que FSCTL_DUPLICATE_EXTENTS_TO_FILE est une opération prise en charge.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
Le système de fichiers vérifie si chaque cluster d’un fichier contient des données valides (à partir d’écritures de fichiers explicites ou de zéros automatiques) ou de données non valides (n’a pas encore été écrit ou mis à zéro). Les systèmes de fichiers qui utilisent une longueur de données valide éparse (VDL) ne stockent pas une longueur de données valide et ne nécessitent pas que les données valides soient contiguës dans un fichier.
FILE_DAX_VOLUME
0x20000000
Le volume spécifié est un volume d’accès direct (DAX).

Remarque :
Cet indicateur a été introduit dans Windows 10, version 1607.
FILE_SUPPORTS_GHOSTING
0x40000000
Le système de fichiers prend en charge le ghosting.

[out, optional] lpFileSystemNameBuffer

Pointeur vers une mémoire tampon qui reçoit le nom du système de fichiers, par exemple, le système de fichiers FAT ou le système de fichiers NTFS. La taille de la mémoire tampon est spécifiée par le paramètre nFileSystemNameSize .

[in] nFileSystemNameSize

Longueur de la mémoire tampon du nom du système de fichiers, en TCHAR. La taille maximale de la mémoire tampon est MAX_PATH+1.

Ce paramètre est ignoré si la mémoire tampon du nom du système de fichiers n’est pas fournie.

Valeur retournée

Si toutes les informations demandées sont récupérées, la valeur de retour est différente de zéro.

Si toutes les informations demandées ne sont pas récupérées, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Lorsqu’un utilisateur tente d’obtenir des informations sur un lecteur de disquette qui n’a pas de disquette ou un lecteur de CD-ROM qui n’a pas de disque compact, le système affiche une boîte de message permettant à l’utilisateur d’insérer une disquette ou un disque compact, respectivement. Pour empêcher le système d’afficher cette boîte de message, appelez la fonction SetErrorMode avec SEM_FAILCRITICALERRORS.

L’indicateur FILE_VOL_IS_COMPRESSED est le seul indicateur de compression basée sur le volume. Le nom du système de fichiers n’est pas modifié pour indiquer la compression. Par exemple, cet indicateur est retourné défini sur un volume DoubleSpace. Lorsque la compression est basée sur le volume, un volume entier est compressé ou non compressé.

L’indicateur FILE_FILE_COMPRESSION indique si un système de fichiers prend en charge la compression basée sur les fichiers. Lorsque la compression est basée sur des fichiers, des fichiers individuels peuvent être compressés ou non compressés.

Les indicateurs FILE_FILE_COMPRESSION et FILE_VOL_IS_COMPRESSED s’excluent mutuellement. Les deux bits ne peuvent pas être retournés définis.

La valeur de longueur maximale du composant stockée dans lpMaximumComponentLength est le seul indicateur qu’un volume prend en charge des noms de fichiers de système de fichiers FAT (ou d’autres systèmes de fichiers) plus longs que la normale. Le nom du système de fichiers n’est pas modifié pour indiquer la prise en charge des noms de fichiers longs.

La fonction GetCompressedFileSize obtient la taille compressée d’un fichier. La fonction GetFileAttributes peut déterminer si un fichier individuel est compressé.

Si le chemin pointe vers un lien symbolique, la fonction retourne des informations de volume pour la cible.

À compter de Windows 8 et de Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 No
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui

SMB ne prend pas en charge les fonctions de gestion des volumes.

Opérations traitées

Si le volume prend en charge les transactions du système de fichiers, la fonction retourne FILE_SUPPORTS_TRANSACTIONS dans lpFileSystemFlags.

Notes

L’en-tête fileapi.h définit GetVolumeInformation en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête fileapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

À propos de KTM

Chiffrement de fichiers

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

Fonctions de gestion des volumes