IVdsVolume::Extend 方法 (vds.h)

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

通过将磁盘盘区添加到每个 plex 的每个成员来扩展当前卷的大小。

语法

HRESULT Extend(
  [in]  VDS_INPUT_DISK *pInputDiskArray,
  [in]  LONG           lNumberOfDisks,
  [out] IVdsAsync      **ppAsync
);

参数

[in] pInputDiskArray

指向VDS_INPUT_DISK结构的数组 指针;每个磁盘的一个结构。

注意 调用方不应将默认成员索引与 Extend 方法结合使用,除非卷只有一个具有一个成员的 plex。
 

[in] lNumberOfDisks

卷中的磁盘总数。 当卷丛包含足够的空间来扩展音量时,调用方可以传递零; pInputDiskArray 必须为 NULL

[out] ppAsync

VDS 在返回时初始化的 IVdsAsync 接口指针的地址。 调用方必须释放接口。 使用此指针可以取消、等待或查询操作的状态。 如果在此接口上调用 IVdsAsync::Wait 方法并返回成功的 HRESULT 值,则必须通过在每个接口指针上调用 IUnknown::Release 方法释放VDS_ASYNC_OUTPUT结构中返回的接口。 但是,如果 Wait 返回失败的 HRESULT 值,或者如果 WaitpHrResult 参数收到失败的 HRESULT 值,则VDS_ASYNC_OUTPUT结构中的接口指针为 NULL,无需释放。 可以使用 Winerror.h 中定义的 SUCCEEDEDFAILED 宏测试成功或失败 HRESULT 值。

返回值

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

返回代码/值 说明
S_OK
方法已成功竞争。
VDS_E_CANNOT_EXTEND
0x8004240EL
无法扩展卷,因为卷上的文件系统不支持该操作。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
没有足够的空间来扩展卷。
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
卷不正常。

备注

此方法扩展同一磁盘上的简单卷,或通过将卷扩展到多个磁盘来创建跨区卷。 调用方可以在基本磁盘上扩展卷,但磁盘范围必须与该卷相邻。

VDS 会自动扩展文件系统以适应扩展卷的大小。 文件系统必须支持此操作。 如果调用方未能指定要使用的区,VDS 会扩展文件系统,但不扩展卷。

扩展和 收缩 操作仅在 NTFS 和 RAW 卷上受支持。

VDS 在扩展卷时应用以下规则:

  • 对于简单和跨区 plex 类型,VDS 使用尚未参与其他 plex 的任何磁盘范围扩展 plex 的唯一成员,无论盘区是否位于同一磁盘上。 VDS 按调用方给出的顺序使用磁盘盘区,忽略盘区的成员索引。 除非在基本磁盘上,否则 VDS 可以使用同一磁盘或不同磁盘上的任何磁盘范围扩展 plex 的唯一成员。
  • 对于使用奇偶校验 plex 类型的条带化和条带化,VDS 将范围分配给 plex 的成员,如下所示:
    • 范围将转到调用方指定的成员索引。
    • 当调用方未能指定成员 ID 时,该范围将转到占用同一磁盘的成员索引。
    VDS 永远不会将盘区分配给同一磁盘上的多个成员。 调用方必须为所有盘区指定成员或无;调用方无法为某些盘区指定成员,而不能为其他盘区指定成员。
当调用方为 pInputDiskArray 传递 NULL,为 lNumberOfDisks 传递零时,VDS 在异步对象中返回S_FALSE,并为方法S_OK。 在这种情况下, S_OK 指示 VDS 已启动操作,但操作是同步的。

无论调用是否启动异步操作,实现者都必须返回指向此方法的 IVdsAsync 接口的指针。

要求

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

另请参阅

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK