IVdsHwProviderStoragePools::CreateLunInStoragePool 方法 (vds.h)
[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
在 存储池中创建 LUN。
语法
HRESULT CreateLunInStoragePool(
[in] VDS_LUN_TYPE type,
[in] ULONGLONG ullSizeInBytes,
[in] VDS_OBJECT_ID StoragePoolId,
[in] LPWSTR pwszUnmaskingList,
[in] VDS_HINTS2 *pHints2,
[out] IVdsAsync **ppAsync
);
参数
[in] type
一个VDS_LUN_TYPE枚举值,该值指定要创建的 LUN 的类型。 新 LUN 可以是 automagic 类型或特定的 RAID 类型,但不能同时是这两者。 如果调用方指定了 automagic 类型,则应在 pHints2 参数中指定一个或多个 automagic 提示。
可以通过对 ppAsync 参数中返回的接口指针调用 IVdsAsync::Wait 方法来检索新 LUN 对象的接口指针。 Wait 返回的 VDS_ASYNC_OUTPUT 结构包含 cl.pLunUnk 成员中的 LUN 对象接口指针。
[in] ullSizeInBytes
新 LUN 的大小(以字节为单位)。 提供程序可以向上或向下舍入大小,以满足对齐要求或其他限制。 (在大多数情况下,提供程序会向上舍入,确保 LUN 在极少数情况下至少与请求的大小一样大。)
创建 LUN 后,调用方可以通过调用 IVdsLun::GetProperties 方法来确定 LUN 的实际大小。
[in] StoragePoolId
一个VDS_OBJECT_ID值,该值标识要在其中创建 LUN 的存储池。 此参数是必需的,不能GUID_NULL。
[in] pwszUnmaskingList
指定要授予 LUN 访问权限的计算机的列表。 该列表是一个以分号分隔、 以 NULL 结尾、用户可读的字符串。
如果值为“”,则向连接到存储子系统的 HBA 端口的所有计算机授予对 LUN 的访问权限。 如果值为“”,则不向任何计算机授予对 LUN 的访问权限。
如果指定了“*”或“”,则不能指定其他值。
对于光纤通道网络和串行附加的 SCSI (SAS) 网络,每个条目都是一个 64 位 World-Wide Name (WWN) ,该端口已取消屏蔽 LUN,格式为十六进制字符串, (长度为 16 个字符,) ,最重要的字节优先。 例如,01:23:45:67:89:AB:CD:EF 的 WWN 地址表示为“0123456789ABCDEF”。 有关详细信息,请参阅 光纤通道 和 SAS 的 T10 规范。
对于 iSCSI 网络,每个条目都是一个 iSCSI 限定名称 (IQN) LUN 取消屏蔽的每个发起程序。 取消屏蔽到特定发起程序的 LUN 被视为与该发起程序相关联。
[in] pHints2
指向 VDS_HINTS2 结构的指针,该结构指定要在创建 LUN 时使用的提示。 提供程序不需要将提示应用到 LUN。 VDS_HINTS2 结构中指定的提示只是对提供程序的请求。
创建 LUN 后,调用方可以通过调用 IVdsLun2::QueryHints2 方法来确定提供程序应用的提示。
如果 类型 参数指定非自动类型,则此参数应为 NULL。
[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 提供程序 。 可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
备注
通过为 类型和pHints2 参数选择适当的值,调用方可以完全、部分或最小方式指定 LUN 的属性。 提供程序可以根据 pHints2 参数指向的 VDS_HINTS2 结构中指定的自动提示自动包含未指定的属性。
实施者注意事项: 提供程序必须在 ppAsync 参数中返回 IVdsAsync 接口指针,即使对此方法的调用未启动异步操作也是如此。
pwszUnmaskingList 参数中的 WWN 和 IQN 列表可能包含重复的名称。 提供商负责验证列表中的所有名称,并在必要时删除重复项。
为了响应 CreateLunInStoragePool 方法,并在将新 LUN 取消屏蔽到任何主机之前,提供程序应用零填充第一个和最后一个兆字节,使 LUN 保持未初始化。
E_INVALIDARG和VDS_E_NOT_SUPPORTED返回值之间存在细微差异。 提供程序不应实现 VDS API 可以呈现给客户端的每个功能。 例如,CreateLunInStoragePool 方法公开了创建许多不同类型的 LUN 的功能, (例如简单、镜像、条带化和奇偶校验) 。 但是,提供程序不需要支持所有类型的 LUN。 如果调用方为 类型 参数指定的值不是有效的 VDS_LUN_TYPE 枚举值,则提供程序应返回 E_INVALIDARG。 如果调用方指定提供程序不支持的有效 类型 值,则提供程序应返回VDS_E_NOT_SUPPORTED。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | vds.h |
Library | Uuid.lib |