Função GetVolumeInformationA (fileapi.h)

Recupera informações sobre o sistema de arquivos e o volume associados ao diretório raiz especificado.

Para especificar um identificador ao recuperar essas informações, use a função GetVolumeInformationByHandleW .

Para recuperar o estado de compactação atual de um arquivo ou diretório, use FSCTL_GET_COMPRESSION.

Sintaxe

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

Um ponteiro para uma cadeia de caracteres que contém o diretório raiz do volume a ser descrito.

Se esse parâmetro for NULL, a raiz do diretório atual será usada. Uma barra invertida à direita é necessária. Por exemplo, você especifica \\MyServer\MyShare como "\\MyServer\MyShare\", ou a unidade C como "C:\".

[out, optional] lpVolumeNameBuffer

Um ponteiro para um buffer que recebe o nome de um volume especificado. O tamanho do buffer é especificado pelo parâmetro nVolumeNameSize .

[in] nVolumeNameSize

O comprimento de um buffer de nome de volume, em TCHARs. O tamanho máximo do buffer é MAX_PATHs+1.

Esse parâmetro será ignorado se o buffer de nome de volume não for fornecido.

[out, optional] lpVolumeSerialNumber

Um ponteiro para uma variável que recebe o número de série do volume.

Esse parâmetro poderá ser NULL se o número de série não for necessário.

Essa função retorna o número de série de volume que o sistema operacional atribui quando um disco rígido é formatado. Para obter programaticamente o número de série do disco rígido que o fabricante atribui, use a propriedade SerialNumberWin32_PhysicalMedia da Instrumentação de Gerenciamento do Windows (WMI).

[out, optional] lpMaximumComponentLength

Um ponteiro para uma variável que recebe o comprimento máximo, em TCHARs, de um componente de nome de arquivo compatível com um sistema de arquivos especificado.

Um componente de nome de arquivo é a parte de um nome de arquivo entre barras invertidas.

O valor armazenado na variável para a qual *lpMaximumComponentLength aponta é usado para indicar que um sistema de arquivos especificado dá suporte a nomes longos. Por exemplo, para um sistema de arquivos FAT que dá suporte a nomes longos, a função armazena o valor 255, em vez do indicador 8.3 anterior. Nomes longos também podem ter suporte em sistemas que usam o sistema de arquivos NTFS.

[out, optional] lpFileSystemFlags

Um ponteiro para uma variável que recebe sinalizadores associados ao sistema de arquivos especificado.

Esse parâmetro pode ser um ou mais dos sinalizadores a seguir. No entanto, FILE_FILE_COMPRESSION e FILE_VOL_IS_COMPRESSED são mutuamente exclusivos.

Valor Significado
FILE_CASE_SENSITIVE_SEARCH
0x00000001
O volume especificado dá suporte a nomes de arquivo que diferenciam maiúsculas de minúsculas.
FILE_CASE_PRESERVED_NAMES
0x00000002
O volume especificado dá suporte a casos preservados de nomes de arquivo quando coloca um nome no disco.
FILE_UNICODE_ON_DISK
0x00000004
O volume especificado dá suporte a Unicode em nomes de arquivo conforme eles aparecem no disco.
FILE_PERSISTENT_ACLS
0x00000008
O volume especificado preserva e impõe listas de controle de acesso (ACL). Por exemplo, o sistema de arquivos NTFS preserva e impõe ACLs, e o sistema de arquivos FAT não.
FILE_FILE_COMPRESSION
0x00000010
O volume especificado dá suporte à compactação baseada em arquivo.
FILE_VOLUME_QUOTAS
0x00000020
O volume especificado dá suporte a cotas de disco.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
O volume especificado dá suporte a arquivos esparsos.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
O volume especificado dá suporte a pontos de nova análise.

Refs: O ReFS dá suporte a pontos de nova análise, mas não os indexa, portanto , FindFirstVolumeMountPoint e FindNextVolumeMountPoint não funcionarão conforme o esperado.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
O sistema de arquivos dá suporte ao armazenamento remoto.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
Em uma operação de limpeza bem-sucedida, o sistema de arquivos retorna informações que descrevem ações adicionais executadas durante a limpeza, como a exclusão do arquivo. Os filtros do sistema de arquivos podem examinar essas informações em seu retorno de chamada pós-limpeza.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
O sistema de arquivos dá suporte a operações de exclusão e renomeação no estilo POSIX.
FILE_VOLUME_IS_COMPRESSED
0x00008000
O volume especificado é um volume compactado, por exemplo, um volume DoubleSpace.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
O volume especificado dá suporte a identificadores de objeto.
FILE_SUPPORTS_ENCRYPTION
0x00020000
O volume especificado dá suporte ao EFS (Sistema de Arquivos Criptografados). Para obter mais informações, consulte Criptografia de Arquivo.
FILE_NAMED_STREAMS
0x00040000
O volume especificado dá suporte a fluxos nomeados.
FILE_READ_ONLY_VOLUME
0x00080000
O volume especificado é somente leitura.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
O volume especificado dá suporte a uma única gravação sequencial.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
O volume especificado dá suporte a transações. Para obter mais informações, consulte Sobre KTM.
FILE_SUPPORTS_HARD_LINKS
0x00400000
O volume especificado dá suporte a links rígidos. Para obter mais informações, consulte Links rígidos e junções.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse valor não tem suporte até o Windows Server 2008 R2 e o Windows 7.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
O volume especificado dá suporte a atributos estendidos. Um atributo estendido é uma parte dos metadados específicos do aplicativo que um aplicativo pode associar a um arquivo e não faz parte dos dados do arquivo.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse valor não tem suporte até o Windows Server 2008 R2 e o Windows 7.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
O sistema de arquivos dá suporte a open by FileID. Para obter mais informações, consulte FILE_ID_BOTH_DIR_INFO.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse valor não tem suporte até o Windows Server 2008 R2 e o Windows 7.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
O volume especificado dá suporte a diários usn (número de sequência de atualização). Para obter mais informações, consulte Alterar registros Diário.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Esse valor não tem suporte até o Windows Server 2008 R2 e o Windows 7.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
O sistema de arquivos dá suporte a fluxos de integridade.
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
O volume especificado dá suporte ao compartilhamento de clusters lógicos entre arquivos no mesmo volume. O sistema de arquivos realoca em gravações em clusters compartilhados. Indica que FSCTL_DUPLICATE_EXTENTS_TO_FILE é uma operação com suporte.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
O sistema de arquivos controla se cada cluster de um arquivo contém dados válidos (de gravações explícitas de arquivo ou zeros automáticos) ou dados inválidos (ainda não foram gravados ou zerados). Os sistemas de arquivos que usam VDL (comprimento de dados válido) esparso não armazenam um comprimento de dados válido e não exigem que os dados válidos sejam contíguos em um arquivo.
FILE_DAX_VOLUME
0x20000000
O volume especificado é um volume DEX (acesso direto).

Observação:
Esse sinalizador foi introduzido no Windows 10, versão 1607.
FILE_SUPPORTS_GHOSTING
0x40000000
O sistema de arquivos dá suporte ao ghosting.

[out, optional] lpFileSystemNameBuffer

Um ponteiro para um buffer que recebe o nome do sistema de arquivos, por exemplo, o sistema de arquivos FAT ou o sistema de arquivos NTFS. O tamanho do buffer é especificado pelo parâmetro nFileSystemNameSize .

[in] nFileSystemNameSize

O comprimento do buffer de nome do sistema de arquivos, em TCHARs. O tamanho máximo do buffer é MAX_PATH+1.

Esse parâmetro será ignorado se o buffer de nome do sistema de arquivos não for fornecido.

Retornar valor

Se todas as informações solicitadas forem recuperadas, o valor retornado será diferente de zero.

Se nem todas as informações solicitadas forem recuperadas, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Quando um usuário tenta obter informações sobre uma unidade de disquete que não tem um disquete ou uma unidade CD-ROM que não tem um disco compacto, o sistema exibe uma caixa de mensagem para o usuário inserir um disquete ou um disco compacto, respectivamente. Para impedir que o sistema exiba essa caixa de mensagem, chame a função SetErrorMode com SEM_FAILCRITICALERRORS.

O sinalizador FILE_VOL_IS_COMPRESSED é o único indicador de compactação baseada em volume. O nome do sistema de arquivos não é alterado para indicar compactação, por exemplo, esse sinalizador é retornado definido em um volume DoubleSpace. Quando a compactação é baseada em volume, um volume inteiro é compactado ou não compactado.

O sinalizador FILE_FILE_COMPRESSION indica se um sistema de arquivos dá suporte à compactação baseada em arquivo. Quando a compactação é baseada em arquivo, arquivos individuais podem ser compactados ou não compactados.

Os sinalizadores FILE_FILE_COMPRESSION e FILE_VOL_IS_COMPRESSED são mutuamente exclusivos. Ambos os bits não podem ser retornados definidos.

O valor máximo de comprimento do componente armazenado em lpMaximumComponentLength é o único indicador de que um volume dá suporte a nomes de arquivo fat (ou outros sistemas de arquivos) mais longos do que o normal. O nome do sistema de arquivos não é alterado para indicar suporte para nomes de arquivo longos.

A função GetCompressedFileSize obtém o tamanho compactado de um arquivo. A função GetFileAttributes pode determinar se um arquivo individual é compactado.

Se o caminho apontar para um link simbólico, a função retornará informações de volume para o destino.

Começando com Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim

O SMB não dá suporte a funções de gerenciamento de volume.

Operações transacionadas

Se o volume der suporte a transações do sistema de arquivos, a função retornará FILE_SUPPORTS_TRANSACTIONS em lpFileSystemFlags.

Observação

O cabeçalho fileapi.h define GetVolumeInformation como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho fileapi.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Sobre a KTM

Criptografia de Arquivo

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

Funções de gerenciamento de volumes