IVdsPack2::CreateVolume2 方法 (vds.h)
[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
使用可选对齐参数在磁盘包中创建卷。
语法
HRESULT CreateVolume2(
[in] VDS_VOLUME_TYPE type,
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[in] ULONG ulStripeSize,
[in] ULONG ulAlign,
[out] IVdsAsync **ppAsync
);
参数
[in] type
VDS_VOLUME_TYPE枚举中的值,指示要创建的卷的类型。
[in] pInputDiskArray
VDS_INPUT_DISK结构的数组,这些结构指示要创建卷的磁盘。
[in] lNumberOfDisks
pInputDiskArray 参数指向的数组中的元素数。
[in] ulStripeSize
新卷的条带大小(以字节为单位)。
[in] ulAlign
卷对齐的字节数。 此参数是可选的,可以为零。 如果指定零,服务器将根据创建卷的磁盘大小确定对齐值。
Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008: 在基本磁盘上, CreateVolume2 方法忽略此参数和 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment 注册表项。 这是一个已知问题,正在解决。 解决方法是使用 IVdsAdvancedDisk::CreatePartition 或 IVdsCreatePartitionEx::CreatePartitionEx 方法在基本磁盘上创建分区,以便它们正确对齐。动态分区和卷使用以下注册表项下的值进行对齐:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment
如果磁盘为 4 GB 或更大,则默认对齐方式为 1 MB;如果磁盘小于 4 GB,则默认对齐方式为 64 KB。
[out] ppAsync
指向 IVdsAsync 接口的指针,该接口在成功完成后接收 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 提供程序 。 可能的返回值包括以下内容。
返回代码/值 | 说明 |
---|---|
|
已成功创建卷。 |
|
未收到卷到达通知。 可能需要调用 IVdsService::Refresh。 |
|
已成功创建卷,但 VDS 未能更新启动配置数据 (BCD) 存储中的启动选项。 |
|
指定的对齐方式为零。 |
|
指定的对齐方式不是 2 的幂。 |
|
指定的磁盘不属于同一个包。 |
|
LDM 服务失败的方法。 |
|
传入的盘区大小太小。 |
|
指定的磁盘数对于此操作无效。 |
|
卷的成员计数必须大于零。 |
|
成员索引必须单调递增,并且从零开始。 |
|
传入的磁盘是 CD-ROM 或 DVD 设备。 |
|
不允许对此磁盘包执行此操作。 |
|
卷的 plex 计数必须大于零。 |
|
plex 索引必须单调递增,并且从零开始。 |
|
对于条带化卷和 RAID-5 卷类型,条带大小(以字节为单位)必须为 2 的幂,对于所有其他卷类型,条带大小必须为零。 |
|
缺少指定的磁盘。 |
|
通过磁盘阵列传入的可移动驱动器中没有媒体。 |
|
其中一个磁盘上没有足够的空间。 |
|
不支持卷类型。 |
|
找不到至少一个传入的磁盘。 |
|
单个磁盘不能参与同一卷的多个成员或多个丛。 |
|
无法访问目标包。 |
|
当调用方尝试创建其他主分区或扩展分区时,已存在 (主分区或具有扩展分区) 的主分区的最大分区数。 |
|
动态提供程序缓存已损坏。 |
|
每个卷不允许超过 32 个磁盘。 |
|
卷大小太小。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | vds.h |
Library | Uuid.lib |