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 个字符,后跟句点“.”,文件扩展名最多为 3 个字符。
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_STATE 设置或清除永久性卷状态标志时, FlagMask 设置为 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 );

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

要求

要求
最低受支持的客户端 Windows 7
标头 ntifs.h (包括 Ntifs.h)

另请参阅

FSCTL_QUERY_PERSISTENT_VOLUME_STATE

FSCTL_SET_PERSISTENT_VOLUME_STATE