getVolumeInformationByHandleW 函数 (fileapi.h)
检索与指定文件关联的文件系统和卷的相关信息。
若要检索文件或目录的当前压缩状态,请使用 FSCTL_GET_COMPRESSION。
语法
BOOL GetVolumeInformationByHandleW(
[in] HANDLE hFile,
[out, optional] LPWSTR lpVolumeNameBuffer,
[in] DWORD nVolumeNameSize,
[out, optional] LPDWORD lpVolumeSerialNumber,
[out, optional] LPDWORD lpMaximumComponentLength,
[out, optional] LPDWORD lpFileSystemFlags,
[out, optional] LPWSTR lpFileSystemNameBuffer,
[in] DWORD nFileSystemNameSize
);
参数
[in] hFile
文件的句柄。
[out, optional] lpVolumeNameBuffer
指向接收指定卷名称的缓冲区的指针。 最大缓冲区大小为 MAX_PATH+1
。
[in] nVolumeNameSize
卷名称缓冲区的长度,以 WCHAR为单位。 最大缓冲区大小为 MAX_PATH+1
。
如果未提供卷名缓冲区,则忽略此参数。
[out, optional] lpVolumeSerialNumber
指向接收卷序列号的变量的指针。
如果不需要序列号,此参数可以为 NULL 。
此函数返回格式化硬盘时操作系统分配的卷序列号。 若要以编程方式获取制造商分配的硬盘序列号,请使用 Windows Management Instrumentation (WMI) Win32_PhysicalMedia 属性 SerialNumber。
[out, optional] lpMaximumComponentLength
指向变量的指针,该变量接收指定文件系统支持的文件名组件的最大长度(以 WCHAR为单位)。
文件名组件是文件名在反斜杠之间的部分。
存储在 *lpMaximumComponentLength 指向的变量中的值用于指示指定的文件系统支持长名称。 例如,对于支持长名称的 FAT 文件系统, 函数存储值 255,而不是以前的 8.3 指示器。 使用 NTFS 文件系统的系统上也支持长名称。
[out, optional] lpFileSystemFlags
指向接收与指定文件系统关联的标志的变量的指针。
此参数可以是以下一个或多个标志。 但是, FILE_FILE_COMPRESSION 和 FILE_VOL_IS_COMPRESSED 是相互排斥的。
Value | 含义 |
---|---|
|
指定的卷支持区分大小写的文件名。 |
|
指定的卷支持在磁盘上放置名称时保留文件名大小写。 |
|
指定的卷支持在磁盘上显示的文件名中的 Unicode。 |
|
指定的卷保留并强制实施访问控制列表 (ACL) 。 例如,NTFS 文件系统保留并强制实施 ACL,而 FAT 文件系统则不这样做。 |
|
指定的卷支持基于文件的压缩。 |
|
指定的卷支持磁盘配额。 |
|
指定的卷支持稀疏文件。 |
|
指定的卷支持重新分析点。 |
|
指定的卷是压缩卷,例如 DoubleSpace 卷。 |
|
指定的卷支持对象标识符。 |
|
指定的卷支持 EFS) 加密文件系统 (。 有关详细信息,请参阅 文件加密。 |
|
指定的卷支持命名流。 |
|
指定的卷是只读的。 |
|
指定的卷支持单个顺序写入。 |
|
指定的卷支持事务。 有关详细信息,请参阅 关于 KTM。 |
|
指定的卷支持硬链接。 有关详细信息,请参阅 硬链接和交接点。
Windows Vista 和 Windows Server 2008: 不支持此值。 |
|
指定的卷支持扩展属性。 扩展属性是应用程序特定的元数据片段,应用程序可以将其与文件关联,并且不是文件数据的一部分。
Windows Vista 和 Windows Server 2008: 不支持此值。 |
|
文件系统支持通过 FileID 打开。 有关详细信息,请参阅 FILE_ID_BOTH_DIR_INFO。
Windows Vista 和 Windows Server 2008: 不支持此值。 |
|
指定的卷支持 (USN) 日志的更新序列号。 有关详细信息,请参阅 更改日记记录。
Windows Vista 和 Windows Server 2008: 不支持此值。 |
|
指定的卷支持在同一卷上的文件之间共享逻辑群集。 文件系统在写入共享群集时重新分配。 指示FSCTL_DUPLICATE_EXTENTS_TO_FILE是受支持的操作。 |
[out, optional] lpFileSystemNameBuffer
指向接收文件系统名称的缓冲区的指针,例如 FAT 文件系统或 NTFS 文件系统。 缓冲区大小由 nFileSystemNameSize 参数指定。
[in] nFileSystemNameSize
文件系统名称缓冲区的长度,以 WCHAR为单位。 最大缓冲区大小为 MAX_PATH+1
。
如果未提供文件系统名称缓冲区,则忽略此参数。
返回值
如果检索了所有请求的信息,则返回值为非零值。
如果未检索所有请求的信息,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
在 Windows 8 和 Windows Server 2012 中,此函数由以下技术支持。
技术 | 支持 |
---|---|
服务器消息块 (SMB) 3.0 协议 | 否 |
SMB 3.0 透明故障转移 (TFO) | 否 |
具有横向扩展文件共享的 SMB 3.0 (SO) | 否 |
群集共享卷文件系统 (CSV) | 是 |
弹性文件系统 (ReFS) | 是 |
SMB 不支持卷管理功能。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | fileapi.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |