IVdsVolume::SetFlags 方法 (vds.h)

[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

设置卷标志。

语法

HRESULT SetFlags(
  [in] ULONG ulFlags,
  [in] BOOL  bRevertOnClose
);

参数

[in] ulFlags

VDS_VOLUME_FLAG枚举的标志。 调用方可以设置以下标志:

  • VDS_VF_LBN_REMAP_ENABLED
  • VDS_VF_HIDDEN
  • VDS_VF_READONLY
  • VDS_VF_NO_DEFAULT_DRIVE_LETTER
  • VDS_VF_INSTALLABLE
  • VDS_VF_SHADOW_COPY

[in] bRevertOnClose

如果 为 TRUE,则临时设置标志。 当调用方释放对卷对象的最后一个引用、调用 IVdsVolume::ClearFlags 或卸载卷时,VDS 会将每个标志重置为以前的状态,除非在整个磁盘上设置了标志, (有关详细信息) 请参阅“备注”部分中的表。 在整个磁盘上设置标志时,必须调用 IVdsVolume::ClearFlags 方法以重置标志。

返回值

此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。

返回代码/值 说明
S_OK
设置标志。
VDS_E_LBN_REMAP_ENABLED_FLAG
0x80042456L
提供程序不支持 VDS_VF_LBN REMAP_ENABLED 卷标志。
VDS_E_NO_DRIVELETTER_FLAG
0x80042457L
提供程序不支持 VDS_VF_NO DRIVELETTER 卷标志。
VDS_E_REVERT_ON_CLOSE
0x80042458L
bRevertOnClose 仅当 设置了VDS_VF_HIDDENVDS_VF_READONLY 卷标志时,才应设置为 true。
VDS_E_REVERT_ON_CLOSE_SET
0x80042459L
某些卷标志已设置为 true。 必须先清除这些标志,然后调用此方法,并将 bRevertOnClose 参数再次设置为 true。 VDS_E_INVALID_OPERATION返回值也可以指示此条件。

注解

VDS_VF_READONLYVDS_VF_HIDDENVDS_VF_NO_DEFAULT_DRIVE_LETTER标志的范围因磁盘类型 (基本或动态) 和分区样式 (MBR 或 GPT) 而异。 范围基于磁盘或卷,如以下条件所述:

  • 如果磁盘是基本磁盘和 MBR,则在卷上设置这些标志之一会影响当前卷和在磁盘上创建具有指定属性的所有未来卷。
  • 如果磁盘是基本磁盘和 GPT、动态和 MBR 或动态和 GPT,则在卷上设置其中一个标志仅适用于该特定卷。
下表标识了 MBR 基本磁盘、GPT 基本磁盘和 MBR 或 GPT 动态磁盘上每个卷标志的范围。
标志 MBR 基本磁盘 GPT 基本磁盘 MBR 或 GPT 动态磁盘
VDS_VF_LBN_REMAP_ENABLED 无法设置。 无法设置。 如果第三方卷管理器支持,请在卷上设置 。
VDS_VF_HIDDEN 在整个磁盘上设置。 仅在卷上设置 (数据分区) 。 在卷上设置。
VDS_VF_READONLY 在整个磁盘上设置。 仅在卷上设置 (数据分区) 。 在卷上设置。
VDS_VF_NO_DEFAULT_DRIVE_LETTER 在整个磁盘上设置。 在分区上设置。 请参阅 VDS_VOLUME_FLAG
VDS_VF_SHADOW_COPY 在整个磁盘上设置。 仅在卷上设置 (数据分区) 。 在卷上设置。
VDS_VF_INSTALLABLE 无法设置。 无法设置。 在卷上设置。
 

如果 bRevertOnCloseTRUE ,并且磁盘是 MBR 基本磁盘,然后删除卷,则标志仍在整个磁盘上设置,标志将应用于在磁盘上创建的任何新卷。 然后,必须使用 IVdsAdvancedDisk::Clean 清除标志。

若要在动态磁盘上创建启动卷,必须设置 卷的VDS_VF_INSTALLABLE 标志,然后通过调用 IVdsVolumeMF::Format 方法格式化卷。

如果卷包含以下一个或多个标志,此方法将失败:

  • VDS_VF_SYSTEM
  • VDS_VF_BOOT
  • VDS_VF_PAGEFILE
  • VDS_VF_HIBERNATION
  • VDS_VF_CRASHDUMP

指定 VDS_VF_HIDDENVDS_VF_READONLY 将强制卸载和重新装载卷,除非 bRevertOnCloseTRUE

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 vds.h
Library Uuid.lib

另请参阅

IVdsAdvancedDisk::Clean

IVdsVolume

IVdsVolume::ClearFlags

VDS_VOLUME_FLAG