Función GetVolumeInformationA (fileapi.h)

Recupera información sobre el sistema de archivos y el volumen asociado al directorio raíz especificado.

Para especificar un identificador al recuperar esta información, use la función GetVolumeInformationByHandleW .

Para recuperar el estado de compresión actual de un archivo o directorio, use FSCTL_GET_COMPRESSION.

Sintaxis

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
);

Parámetros

[in, optional] lpRootPathName

Puntero a una cadena que contiene el directorio raíz del volumen que se va a describir.

Si este parámetro es NULL, se usa la raíz del directorio actual. Se requiere una barra diagonal inversa final. Por ejemplo, especifique \\MyServer\MyShare como "\\MyServer\MyShare\" o la unidad C como "C:\".

[out, optional] lpVolumeNameBuffer

Puntero a un búfer que recibe el nombre de un volumen especificado. El tamaño del búfer se especifica mediante el parámetro nVolumeNameSize .

[in] nVolumeNameSize

Longitud de un búfer de nombres de volumen, en TCHAR. El tamaño máximo del búfer es MAX_PATHs+1.

Este parámetro se omite si no se proporciona el búfer de nombres de volumen.

[out, optional] lpVolumeSerialNumber

Puntero a una variable que recibe el número de serie del volumen.

Este parámetro puede ser NULL si no se requiere el número de serie.

Esta función devuelve el número de serie del volumen que asigna el sistema operativo cuando se da formato a un disco duro. Para obtener mediante programación el número de serie del disco duro que asigna el fabricante, use el Instrumental de administración de Windows (WMI) Win32_PhysicalMedia propiedad SerialNumber.

[out, optional] lpMaximumComponentLength

Puntero a una variable que recibe la longitud máxima, en TCHAR, de un componente de nombre de archivo que admite un sistema de archivos especificado.

Un componente de nombre de archivo es la parte de un nombre de archivo entre barras diagonales inversas.

Valor almacenado en la variable a la que *lpMaximumComponentLength apunta a se usa para indicar que un sistema de archivos especificado admite nombres largos. Por ejemplo, para un sistema de archivos FAT que admite nombres largos, la función almacena el valor 255, en lugar del indicador anterior 8.3. Los nombres largos también se pueden admitir en sistemas que usan el sistema de archivos NTFS.

[out, optional] lpFileSystemFlags

Puntero a una variable que recibe marcas asociadas al sistema de archivos especificado.

Este parámetro puede ser una o varias de las marcas siguientes. Sin embargo, FILE_FILE_COMPRESSION y FILE_VOL_IS_COMPRESSED son mutuamente excluyentes.

Valor Significado
FILE_CASE_SENSITIVE_SEARCH
0x00000001
El volumen especificado admite nombres de archivo que distinguen mayúsculas de minúsculas.
FILE_CASE_PRESERVED_NAMES
0x00000002
El volumen especificado admite mayúsculas y minúsculas conservadas de nombres de archivo cuando coloca un nombre en el disco.
FILE_UNICODE_ON_DISK
0x00000004
El volumen especificado admite Unicode en los nombres de archivo tal y como aparecen en el disco.
FILE_PERSISTENT_ACLS
0x00000008
El volumen especificado conserva y aplica listas de control de acceso (ACL). Por ejemplo, el sistema de archivos NTFS conserva y aplica las ACL, y el sistema de archivos FAT no.
FILE_FILE_COMPRESSION
0x00000010
El volumen especificado admite la compresión basada en archivos.
FILE_VOLUME_QUOTAS
0x00000020
El volumen especificado admite cuotas de disco.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
El volumen especificado admite archivos dispersos.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
El volumen especificado admite puntos de reanálisis.

Árbitros: ReFS admite puntos de reanálisis, pero no los indexa, por lo que FindFirstVolumeMountPoint y FindNextVolumeMountPoint no funcionarán según lo previsto.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
El sistema de archivos admite el almacenamiento remoto.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
En una operación de limpieza correcta, el sistema de archivos devuelve información que describe las acciones adicionales realizadas durante la limpieza, como eliminar el archivo. Los filtros del sistema de archivos pueden examinar esta información en su devolución de llamada posterior a la limpieza.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
El sistema de archivos admite operaciones de eliminación y cambio de nombre de estilo POSIX.
FILE_VOLUME_IS_COMPRESSED
0x00008000
El volumen especificado es un volumen comprimido, por ejemplo, un volumen DoubleSpace.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
El volumen especificado admite identificadores de objeto.
FILE_SUPPORTS_ENCRYPTION
0x00020000
El volumen especificado admite el sistema de archivos cifrado (EFS). Para obtener más información, vea Cifrado de archivos.
FILE_NAMED_STREAMS
0x00040000
El volumen especificado admite flujos con nombre.
FILE_READ_ONLY_VOLUME
0x00080000
El volumen especificado es de solo lectura.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
El volumen especificado admite una única escritura secuencial.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
El volumen especificado admite transacciones. Para obtener más información, vea Acerca de KTM.
FILE_SUPPORTS_HARD_LINKS
0x00400000
El volumen especificado admite vínculos físicos. Para obtener más información, vea Vínculos físicos y uniones.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Server 2008 R2 y Windows 7.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
El volumen especificado admite atributos extendidos. Un atributo extendido es un fragmento de metadatos específicos de la aplicación que una aplicación puede asociar a un archivo y no forma parte de los datos del archivo.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Server 2008 R2 y Windows 7.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
El sistema de archivos admite open by FileID. Para obtener más información, consulte FILE_ID_BOTH_DIR_INFO.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Server 2008 R2 y Windows 7.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
El volumen especificado admite diarios de número de secuencia de actualización (USN). Para obtener más información, vea Cambiar registros de Journal.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Server 2008 R2 y Windows 7.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
El sistema de archivos admite secuencias de integridad.
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
El volumen especificado admite el uso compartido de clústeres lógicos entre archivos del mismo volumen. El sistema de archivos se reasigna en escrituras en clústeres compartidos. Indica que FSCTL_DUPLICATE_EXTENTS_TO_FILE es una operación admitida.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
El sistema de archivos realiza un seguimiento de si cada clúster de un archivo contiene datos válidos (ya sea de escrituras de archivos explícitos o ceros automáticos) o datos no válidos (aún no se han escrito en o sin cero). Los sistemas de archivos que usan longitud de datos válida dispersa (VDL) no almacenan una longitud de datos válida y no requieren que los datos válidos sean contiguos dentro de un archivo.
FILE_DAX_VOLUME
0x20000000
El volumen especificado es un volumen de acceso directo (DAX).

Nota:
Esta marca se introdujo en Windows 10, versión 1607.
FILE_SUPPORTS_GHOSTING
0x40000000
El sistema de archivos admite fantasmas.

[out, optional] lpFileSystemNameBuffer

Puntero a un búfer que recibe el nombre del sistema de archivos, por ejemplo, el sistema de archivos FAT o el sistema de archivos NTFS. El parámetro nFileSystemNameSize especifica el tamaño del búfer.

[in] nFileSystemNameSize

Longitud del búfer de nombres del sistema de archivos, en TCHAR. El tamaño máximo del búfer es MAX_PATH+1.

Este parámetro se omite si no se proporciona el búfer de nombres del sistema de archivos.

Valor devuelto

Si se recupera toda la información solicitada, el valor devuelto es distinto de cero.

Si no se recupera toda la información solicitada, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Cuando un usuario intenta obtener información sobre una unidad de disquete que no tiene un disco disquete o una unidad CD-ROM que no tiene un disco compacto, el sistema muestra un cuadro de mensaje para que el usuario inserte un disco disquete o un disco compacto, respectivamente. Para evitar que el sistema muestre este cuadro de mensaje, llame a la función SetErrorMode con SEM_FAILCRITICALERRORS.

La marca FILE_VOL_IS_COMPRESSED es el único indicador de compresión basada en volumen. El nombre del sistema de archivos no se modifica para indicar la compresión, por ejemplo, se devuelve esta marca establecida en un volumen DoubleSpace. Cuando la compresión está basada en volumen, un volumen completo se comprime o no se comprime.

La marca FILE_FILE_COMPRESSION indica si un sistema de archivos admite la compresión basada en archivos. Cuando la compresión se basa en archivos, los archivos individuales se pueden comprimir o no comprimir.

Las marcas FILE_FILE_COMPRESSION y FILE_VOL_IS_COMPRESSED son mutuamente excluyentes. No se pueden devolver ambos bits.

El valor de longitud máxima del componente almacenado en lpMaximumComponentLength es el único indicador de que un volumen admite nombres de archivo FAT más largos de lo normal (u otro sistema de archivos). El nombre del sistema de archivos no se modifica para indicar la compatibilidad con nombres de archivo largos.

La función GetCompressedFileSize obtiene el tamaño comprimido de un archivo. La función GetFileAttributes puede determinar si un archivo individual está comprimido.

Si la ruta de acceso apunta a un vínculo simbólico, la función devolverá información de volumen del destino.

A partir de Windows 8 y Windows Server 2012, esta función es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS)
Sistema de archivos resistente a errores (ReFS)

SMB no admite funciones de administración de volúmenes.

Operaciones de transacción

Si el volumen admite transacciones del sistema de archivos, la función devuelve FILE_SUPPORTS_TRANSACTIONS en lpFileSystemFlags.

Nota

El encabezado fileapi.h define GetVolumeInformation como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado fileapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Acerca de KTM

Cifrado de archivos

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

Funciones de administración de volúmenes