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结构的数组 的 指针;每个磁盘的一个结构。
[in] lNumberOfDisks
卷中的磁盘总数。 当卷丛包含足够的空间来扩展音量时,调用方可以传递零; pInputDiskArray 必须为 NULL。
[out] ppAsync
VDS 在返回时初始化的 IVdsAsync 接口指针的地址。 调用方必须释放接口。 使用此指针可以取消、等待或查询操作的状态。 如果在此接口上调用 IVdsAsync::Wait 方法并返回成功的 HRESULT 值,则必须通过在每个接口指针上调用 IUnknown::Release 方法释放VDS_ASYNC_OUTPUT结构中返回的接口。 但是,如果 Wait 返回失败的 HRESULT 值,或者如果 Wait 的 pHrResult 参数收到失败的 HRESULT 值,则VDS_ASYNC_OUTPUT结构中的接口指针为 NULL,无需释放。 可以使用 Winerror.h 中定义的 SUCCEEDED 和 FAILED 宏测试成功或失败 HRESULT 值。
返回值
此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。
返回代码/值 | 说明 |
---|---|
|
方法已成功竞争。 |
|
无法扩展卷,因为卷上的文件系统不支持该操作。 |
|
没有足够的空间来扩展卷。 |
|
卷不正常。 |
备注
此方法扩展同一磁盘上的简单卷,或通过将卷扩展到多个磁盘来创建跨区卷。 调用方可以在基本磁盘上扩展卷,但磁盘范围必须与该卷相邻。
VDS 会自动扩展文件系统以适应扩展卷的大小。 文件系统必须支持此操作。 如果调用方未能指定要使用的区,VDS 会扩展文件系统,但不扩展卷。
扩展和 收缩 操作仅在 NTFS 和 RAW 卷上受支持。
VDS 在扩展卷时应用以下规则:
- 对于简单和跨区 plex 类型,VDS 使用尚未参与其他 plex 的任何磁盘范围扩展 plex 的唯一成员,无论盘区是否位于同一磁盘上。 VDS 按调用方给出的顺序使用磁盘盘区,忽略盘区的成员索引。 除非在基本磁盘上,否则 VDS 可以使用同一磁盘或不同磁盘上的任何磁盘范围扩展 plex 的唯一成员。
- 对于使用奇偶校验 plex 类型的条带化和条带化,VDS 将范围分配给 plex 的成员,如下所示:
- 范围将转到调用方指定的成员索引。
- 当调用方未能指定成员 ID 时,该范围将转到占用同一磁盘的成员索引。
无论调用是否启动异步操作,实现者都必须返回指向此方法的 IVdsAsync 接口的指针。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | vds.h |
Library | Uuid.lib |