FILE_FS_PERSISTENT_VOLUME_INFORMATION结构 (ntifs.h)

FILE_FS_PERSISTENT_VOLUME_INFORMATION 结构用于控制文件系统卷的持久设置。 在重启计算机之间,文件系统卷上保留永久性设置。

语法

typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
  ULONG VolumeFlags;
  ULONG FlagMask;
  ULONG Version;
  ULONG Reserved;
} FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;

成员

VolumeFlags

文件系统卷的持久状态设置。 此值是以下内容的按位 OR 组合。

价值 意义
PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED 0x00000001 此位的 0 表示已启用 8.3 短名称的创建,1 表示禁用短名称创建。 8.3 短文件名最多包含 8 个字符,后跟句点“.”和最多三个字符的文件扩展名。
PERSISTENT_VOLUME_STATE_VOLUME_SCRUB_DISABLED 0x00000002 设置后,此标志指示卷清理已禁用卷。 从 Windows 8 开始有效。
PERSISTENT_VOLUME_STATE_GLOBAL_METADATA_NO_SEEK_PENALTY 0x00000004 为分层卷启用全局无查找惩罚。 从 Windows 8.1 开始有效。
PERSISTENT_VOLUME_STATE_LOCAL_METADATA_NO_SEEK_PENALTY 0x00000008 为分层卷启用本地无查找处罚。 从 Windows 8.1 开始有效。
PERSISTENT_VOLUME_STATE_NO_HEAT_GATHERING 0x00000010 设置时,不会为分层卷启用热收集。 从 Windows 8.1 开始有效。
PERSISTENT_VOLUME_STATE_CONTAINS_BACKING_WIM 0x00000020 指示此卷支持系统卷,其中包含 Windows 映像格式 (WIM) 文件中的文件。 从 Windows 8.1 更新开始有效。
PERSISTENT_VOLUME_STATE_BACKED_BY_WIM 0x00000040 指示此卷依赖于另一个卷来提供系统关键启动文件。 另一个卷包含一个 WIM 文件,该文件可备份此卷上的文件。 此标志是只读的。 从 Windows 8.1 更新开始有效。
PERSISTENT_VOLUME_STATE_DEV_VOLUME 0x00002000 指示此卷的格式为开发人员卷。 文件系统和其他系统组件可以使用此功能来启用不需要管理员信任给定计算机上的卷的优化。 从 Windows 11 版本 22H2 9 月更新开始有效。
PERSISTENT_VOLUME_STATE_TRUSTED_VOLUME 0x00004000 指示给定计算机上的管理员已信任此卷,并且愿意启用优化,例如不将防病毒筛选器附加到卷。 此信息保存在给定计算机上的注册表中。 文件系统和其他系统组件可以使用此功能来启用优化,这些优化要求管理员信任给定计算机上的卷。 从 Windows 11 版本 22H2 9 月更新开始有效。

FlagMask

VolumeFlags中显示的有效标志的掩码值。 这是 VolumeFlags描述的所需标志的按位 OR 组合。

Version

此结构的版本号。 设置为 1。

Reserved

保留。 设置为 0;

言论

FILE_FS_PERSISTENT_VOLUME_INFORMATION 结构用于 FSCTL_SET_PERSISTENT_VOLUME_STATEFSCTL_QUERY_PERSISTENT_VOLUME_STATE 控制代码。

若要查询状态标志,FlagMask 设置为要检查的标志的组合。 例如,如果唯一感兴趣的查找惩罚标志,FlagMask = PERSISTENT_VOLUME_STATE_GLOBAL_METADATA_NO_SEEK_PENALTY |PERSISTENT_VOLUME_STATE_LOCAL_METADATA_NO_SEEK_PENALTY。 此外,如果只查询短名称支持,则设置 FlagMask = PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED。

设置或清除永久性卷状态标志时,使用 FSCTL_SET_PERSISTENT_VOLUME_STATEFlagMask 将设置为卷 VolumeFlags 中的所有标志, 将受到影响。 VolumeFlags 包含要为卷设置的实际持久状态标志。 以下示例演示如何设置 FILE_FS_PERSISTENT_VOLUME_INFORMATION 的成员,以便为卷启用短名称创建。

IO_STATUS_BLOCK IoStatus;
FILE_FS_PERSISTENT_VOLUME_INFORMATION PersistVolInfo;
NTSTATUS status;

PersistVolInfo.VolumeFlags = 0;    // enable shortname creation on this volume
PersistVolInfo.FlagMask    = PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED;
PersistVolInfo.Version     = 1;
PersistVolInfo.Reserved    = 0;

// issue the request to the file system to set the enable state
//
status = ZwFsControlFile( VolumeHandle,
                          NULL,
                          NULL,
                          NULL,
                          &IoStatus,
                          FSCTL_SET_PERSISTENT_VOLUME_STATE,
                          &PersistVolInfo,
                          sizeof(FILE_FS_PERSISTENT_VOLUME_INFORMATION),
                          NULL,
                          0 );

对于查询和设置请求,版本 成员必须设置为当前版本 1。

要求

要求 价值
最低支持的客户端 Windows 7
标头 ntifs.h (include Ntifs.h)

另请参阅

FSCTL_QUERY_PERSISTENT_VOLUME_STATE

FSCTL_SET_PERSISTENT_VOLUME_STATE