Condividi tramite


Funzione GetVolumeInformationA (fileapi.h)

Recupera informazioni sul file system e sul volume associati alla directory radice specificata.

Per specificare un handle durante il recupero di queste informazioni, usare la funzione GetVolumeInformationByHandleW.

Per recuperare lo stato di compressione corrente di un file o di una directory, usare FSCTL_GET_COMPRESSION.

Sintassi

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

Parametri

[in, optional] lpRootPathName

Puntatore a una stringa contenente la directory radice del volume da descrivere.

Se questo parametro è NULL, viene utilizzata la radice della directory corrente. È necessaria una barra rovesciata finale. Ad esempio, si specifica \\MyServer\MyShare come "\\MyServer\MyShare\" o l'unità C come "C:\".

[out, optional] lpVolumeNameBuffer

Puntatore a un buffer che riceve il nome di un volume specificato. La dimensione del buffer viene specificata dal parametro nVolumeNameSize.

[in] nVolumeNameSize

Lunghezza di un buffer dei nomi di volume, in TCHAR. La dimensione massima del buffer è MAX_PATHs+1.

Questo parametro viene ignorato se il buffer dei nomi del volume non viene fornito.

[out, optional] lpVolumeSerialNumber

Puntatore a una variabile che riceve il numero di serie del volume.

Questo parametro può essere NULL se il numero di serie non è obbligatorio.

Questa funzione restituisce il numero di serie del volume assegnato dal sistema operativo quando viene formattato un disco rigido. Per ottenere a livello di codice il numero di serie del disco rigido assegnato dal produttore, utilizzare la proprietà Strumentazione gestione Windows (WMI) Win32_PhysicalMediaSerialNumber.

[out, optional] lpMaximumComponentLength

Puntatore a una variabile che riceve la lunghezza massima, in TCHAR, di un componente del nome file supportato da un file system specificato.

Un componente nome file è la parte di un nome file tra le barre rovesciata.

Il valore archiviato nella variabile che *lpMaximumComponentLength punta a viene usato per indicare che un file system specificato supporta nomi lunghi. Ad esempio, per un file system FAT che supporta nomi lunghi, la funzione archivia il valore 255 anziché l'indicatore 8.3 precedente. I nomi lunghi possono essere supportati anche nei sistemi che usano il file system NTFS.

[out, optional] lpFileSystemFlags

Puntatore a una variabile che riceve i flag associati al file system specificato.

Questo parametro può essere uno o più dei flag seguenti. Tuttavia, FILE_FILE_COMPRESSION e FILE_VOL_IS_COMPRESSED si escludono a vicenda.

Valore Significato
FILE_CASE_SENSITIVE_SEARCH
0x00000001
Il volume specificato supporta i nomi di file con distinzione tra maiuscole e minuscole.
FILE_CASE_PRESERVED_NAMES
0x00000002
Il volume specificato supporta le maiuscole e minuscole dei nomi di file mantenuti quando inserisce un nome su disco.
FILE_UNICODE_ON_DISK
0x00000004
Il volume specificato supporta Unicode nei nomi di file così come vengono visualizzati su disco.
FILE_PERSISTENT_ACLS
0x00000008
Il volume specificato mantiene e applica gli elenchi di controllo di accesso (ACL). Ad esempio, il file system NTFS mantiene e applica gli ACL e il file system FAT non lo fa.
FILE_FILE_COMPRESSION
0x00000010
Il volume specificato supporta la compressione basata su file.
FILE_VOLUME_QUOTAS
0x00000020
Il volume specificato supporta le quote del disco.
FILE_SUPPORTS_SPARSE_FILES
0x00000040
Il volume specificato supporta i file sparse.
FILE_SUPPORTS_REPARSE_POINTS
0x00000080
Il volume specificato supporta i reparse points.

ReFS: ReFS supporta i reparse points ma non li indicizza in modo FindFirstVolumeMountPoint e FindNextVolumeMountPoint non funzionerà come previsto.
FILE_SUPPORTS_REMOTE_STORAGE
0x00000100
Il file system supporta l'archiviazione remota.
FILE_RETURNS_CLEANUP_RESULT_INFO
0x00000200
In un'operazione di pulizia riuscita, il file system restituisce informazioni che descrivono azioni aggiuntive eseguite durante la pulizia, ad esempio l'eliminazione del file. I filtri del file system possono esaminare queste informazioni nel callback post-pulizia.
FILE_SUPPORTS_POSIX_UNLINK_RENAME
0x00000400
Il file system supporta operazioni di eliminazione e ridenominazione in stile POSIX.
FILE_VOLUME_IS_COMPRESSED
0x00008000
Il volume specificato è un volume compresso, ad esempio un volume DoubleSpace.
FILE_SUPPORTS_OBJECT_IDS
0x00010000
Il volume specificato supporta gli identificatori di oggetto.
FILE_SUPPORTS_ENCRYPTION
0x00020000
Il volume specificato supporta il file system crittografato (EFS). Per altre informazioni, vedere File Encryption.
FILE_NAMED_STREAMS
0x00040000
Il volume specificato supporta flussi denominati.
FILE_READ_ONLY_VOLUME
0x00080000
Il volume specificato è di sola lettura.
FILE_SEQUENTIAL_WRITE_ONCE
0x00100000
Il volume specificato supporta una singola scrittura sequenziale.
FILE_SUPPORTS_TRANSACTIONS
0x00200000
Il volume specificato supporta le transazioni. Per altre informazioni, vedere Informazioni su KTM.
FILE_SUPPORTS_HARD_LINKS
0x00400000
Il volume specificato supporta collegamenti rigidi. Per altre informazioni, vedere collegamenti rigidi e giunzioni.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato fino a Windows Server 2008 R2 e Windows 7.
FILE_SUPPORTS_EXTENDED_ATTRIBUTES
0x00800000
Il volume specificato supporta gli attributi estesi. Un attributo esteso è una parte di metadati specifici dell'applicazione che un'applicazione può associare a un file e non fa parte dei dati del file.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato fino a Windows Server 2008 R2 e Windows 7.
FILE_SUPPORTS_OPEN_BY_FILE_ID
0x01000000
Il file system supporta l'apertura da FileID. Per altre informazioni, vedere FILE_ID_BOTH_DIR_INFO.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato fino a Windows Server 2008 R2 e Windows 7.
FILE_SUPPORTS_USN_JOURNAL
0x02000000
Il volume specificato supporta i journal del numero di sequenza di aggiornamento (USN). Per altre informazioni, vedere Change Journal Records.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è supportato fino a Windows Server 2008 R2 e Windows 7.
FILE_SUPPORTS_INTEGRITY_STREAMS
0x04000000
Il file system supporta flussi di integrità .
FILE_SUPPORTS_BLOCK_REFCOUNTING
0x08000000
Il volume specificato supporta la condivisione di cluster logici tra file nello stesso volume. Il file system rialloca le scritture nei cluster condivisi. Indica che FSCTL_DUPLICATE_EXTENTS_TO_FILE è un'operazione supportata.
FILE_SUPPORTS_SPARSE_VDL
0x10000000
Il file system tiene traccia del fatto che ogni cluster di un file contenga dati validi (da scritture di file esplicite o zeri automatici) o dati non validi (non ancora scritti o zero). I file system che usano una lunghezza di dati valida (VDL) di tipo sparse non archiviano una lunghezza di dati valida e non richiedono che i dati validi siano contigui all'interno di un file.
FILE_DAX_VOLUME
0x20000000
Il volume specificato è un volume DAX (Direct Access).

Nota:
Questo flag è stato introdotto in Windows 10 versione 1607.
FILE_SUPPORTS_GHOSTING
0x40000000
Il file system supporta il ghosting.

[out, optional] lpFileSystemNameBuffer

Puntatore a un buffer che riceve il nome del file system, ad esempio il file system FAT o il file system NTFS. La dimensione del buffer viene specificata dal parametro nFileSystemNameSize.

[in] nFileSystemNameSize

Lunghezza del buffer dei nomi del file system, in TCHAR. La dimensione massima del buffer è MAX_PATH+1.

Questo parametro viene ignorato se il buffer dei nomi del file system non viene fornito.

Valore restituito

Se vengono recuperate tutte le informazioni richieste, il valore restituito è diverso da zero.

Se non vengono recuperate tutte le informazioni richieste, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Quando un utente tenta di ottenere informazioni su un'unità floppy che non dispone di un disco floppy o di un'unità CD-ROM che non dispone di un disco compatto, il sistema visualizza una finestra di messaggio per consentire all'utente di inserire rispettivamente un disco floppy o un disco compatto. Per impedire al sistema di visualizzare questa finestra di messaggio, chiamare la funzione setErrorMode con SEM_FAILCRITICALERRORS.

Il flag FILE_VOL_IS_COMPRESSED è l'unico indicatore della compressione basata sul volume. Il nome del file system non viene modificato per indicare la compressione, ad esempio, questo flag viene restituito in un volume DoubleSpace. Quando la compressione è basata sul volume, un intero volume viene compresso o non compresso.

Il flag FILE_FILE_COMPRESSION indica se un file system supporta la compressione basata su file. Quando la compressione è basata su file, i singoli file possono essere compressi o non compressi.

I flag FILE_FILE_COMPRESSION e FILE_VOL_IS_COMPRESSED si escludono a vicenda. Non è possibile restituire entrambi i bit.

Il valore massimo della lunghezza del componente archiviato in lpMaximumComponentLength è l'unico indicatore che un volume supporta nomi di file system FAT (o altri file system) più lunghi del normale. Il nome del file system non viene modificato per indicare il supporto per i nomi di file lunghi.

La funzione GetCompressedFileSize ottiene le dimensioni compresse di un file. La funzione GetFileAttributes può determinare se un singolo file è compresso.

Se il percorso punta a un collegamento simbolico, la funzione restituisce informazioni sul volume per la destinazione.

A partire da Windows 8 e Windows Server 2012, questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Sostenuto
Protocollo SMB (Server Message Block) 3.0 No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) No
Cluster Shared Volume File System (CsvFS)
Resilient File System (ReFS)

SMB non supporta le funzioni di gestione dei volumi.

Operazioni transazionate

Se il volume supporta le transazioni di file system, la funzione restituisce FILE_SUPPORTS_TRANSACTIONS in lpFileSystemFlags.

Nota

L'intestazione fileapi.h definisce GetVolumeInformation come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows XP [app desktop | App UWP]
server minimo supportato Windows Server 2003 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione fileapi.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

Informazioni sui KTM

di crittografia file

GetCompressedFileSize

GetFileAttributes

GetVolumeInformationByHandleW

SetErrorMode

SetVolumeLabel

funzioni di gestione dei volumi