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) | 文件系统支持扩展属性(EA)。 |
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 字节)边界上对齐。
要求
要求 | 价值 |
---|---|
标头 | ntifs.h(包括 Ntifs.h、Fltkernel.h) |