FILE_FS_ATTRIBUTE_INFORMATION 结构 (ntifs.h)
FILE_FS_ATTRIBUTE_INFORMATION 结构用于查询文件系统的属性信息。
语法
typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
ULONG FileSystemAttributes;
LONG MaximumComponentNameLength;
ULONG FileSystemNameLength;
WCHAR FileSystemName[1];
} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
成员
FileSystemAttributes
指定指定文件系统属性的标志的位掩码,作为以下标志的兼容组合。
值 | 含义 |
---|---|
FILE_CASE_SENSITIVE_SEARCH (0x00000001) | 文件系统支持区分大小写的文件名。 |
FILE_CASE_PRESERVED_NAMES (0x00000002) | 文件系统在磁盘上放置名称时保留文件名大小写。 |
FILE_UNICODE_ON_DISK (0x00000004) | 文件系统在文件名中支持 Unicode 。 |
FILE_PERSISTENT_ACLS (0x00000008) | 文件系统保留并强制实施访问控制列表 (ACL) 。 |
FILE_FILE_COMPRESSION (0x00000010) | 文件系统支持基于文件的压缩。 此标志与 FILE_VOLUME_IS_COMPRESSED 标志不兼容。 此标志不会影响通过网络传输数据的方式。 |
FILE_VOLUME_QUOTAS (0x00000020) | 文件系统支持每用户配额。 |
FILE_SUPPORTS_SPARSE_FILES (0x00000040) | 文件系统支持稀疏文件。 |
FILE_SUPPORTS_REPARSE_POINTS (0x00000080) | 文件系统支持 重新分析点。 |
FILE_SUPPORTS_REMOTE_STORAGE (0x00000100) | 文件系统支持远程存储。 |
FILE_RETURNS_CLEANUP_RESULT_INFO (0x00000200) | 成功执行清理操作后,文件系统将返回描述清理期间执行的其他操作的信息,例如删除文件。 文件系统筛选器可以在其清理后回调中检查此信息。 |
FILE_SUPPORTS_POSIX_UNLINK_RENAME (0x00000400) | 文件系统支持 POSIX 样式的删除和重命名操作。 |
FILE_VOLUME_IS_COMPRESSED (0x00008000) | 指定的卷是压缩卷。 此标志与 FILE_FILE_COMPRESSION 标志不兼容。 这不会影响通过网络传输数据的方式。 |
FILE_SUPPORTS_OBJECT_IDS (0x00010000) | 文件系统支持对象标识符。 |
FILE_SUPPORTS_ENCRYPTION (0x00020000) | 文件系统支持加密。 |
FILE_NAMED_STREAMS (0x00040000) | 文件系统支持文件的命名 数据流 。 |
FILE_READ_ONLY_VOLUME (0x00080000) | 指定的卷是只读的。 |
FILE_SEQUENTIAL_WRITE_ONCE (0x00100000) | 指定的卷只能写入一次。 必须按顺序执行写入。 |
FILE_SUPPORTS_TRANSACTIONS (0x00200000) | 文件系统支持 事务处理。 |
FILE_SUPPORTS_HARD_LINKS (0x00400000) | 文件系统支持指向其他设备和分区的直接链接。 |
FILE_SUPPORTS_EXTENDED_ATTRIBUTES (0x00800000) | 文件系统支持扩展属性 (CA) 。 |
FILE_SUPPORTS_OPEN_BY_FILE_ID (0x01000000) | 文件系统支持按文件 ID 打开。 |
FILE_SUPPORTS_USN_JOURNAL (0x02000000) | 文件系统支持更新序列号 (USN) 日志。 |
FILE_SUPPORTS_INTEGRITY_STREAMS (0x04000000) | 文件系统支持 完整性流。 |
FILE_SUPPORTS_BLOCK_REFCOUNTING (0x08000000) | 文件系统支持 块克隆,即在同一卷上的文件之间共享逻辑群集。 文件系统在写入共享群集时重新分配。 |
FILE_SUPPORTS_SPARSE_VDL (0x10000000) | 文件系统跟踪文件的每个群集是否包含有效数据, (来自显式文件写入或自动零) 或无效数据 (尚未写入或归零) 。 使用稀疏的有效数据长度 (VDL) 的文件系统不存储有效的数据长度,也不要求有效数据在文件中是连续的。 |
FILE_DAX_VOLUME (0x20000000) | 指定的卷是直接访问 (DAX) 卷。 |
FILE_SUPPORTS_GHOSTING (0x40000000) | 文件系统支持虚影。 |
MaximumComponentNameLength
指定文件系统支持的最大文件名组件长度(以字节为单位)。 文件名组件是路径分隔符 (如反斜杠) 之间的文件名部分。
FileSystemNameLength
文件系统名称的长度(以字节为单位)。 此字段的值必须大于零。
FileSystemName[1]
包含文件系统名称的可变长度 Unicode 字段。 此字段不是以 null 结尾的,必须作为 FileSystemNameLength 字节序列进行处理。
注解
可以通过以下任一方式查询此信息:
调用 FltQueryVolumeInformation 或 ZwQueryVolumeInformationFile,将 FileFsAttributeInformation 作为 FileInformationClass 的值传递,并将调用方分配 的FILE_FS_ATTRIBUTE_INFORMATION结构化缓冲区作为 FileInformation 的值传递。
- 注意:在 CSVFS 上, FileFsAttributeInformation 返回 CSVFS 文件系统的FILE_FS_ATTRIBUTE_INFORMATION 。 如果要查询 文件系统 CSVFS 分层的 FileFsAttributeInformation ,则应使用 FSCTL_CSV_QUERY_DOWN_LEVEL_FILE_SYSTEM_CHARACTERISTICS。
使用主函数代码 IRP_MJ_QUERY_VOLUME_INFORMATION创建 IRP。
查询此信息不需要任何特定的访问权限。 因此,只要通过卷本身或卷上的文件或目录的打开句柄访问卷,此信息就可用。
在 FileInformation 参数中传递给 FltQueryVolumeInformation 或 ZwQueryVolumeInformationFile 的缓冲区大小必须至少 sizeof(FILE_FS_ATTRIBUTE_INFORMATION)
为 。 由于实际上不能假定最大文件系统名称长度 (,因此限制为 2^31 个字符点) ,因此,一旦 知道 FileSystemNameLength ,将需要对其中一个例程进行第二次调用。
此结构必须在 LONG (4 字节) 边界上对齐。
要求
要求 | 值 |
---|---|
Header | ntifs.h (包括 Ntifs.h、Fltkernel.h) |