IVdsPack::CreateVolume

IVdsPack::CreateVolume

本文关键字:CreateVolume IVdsPack      更新时间:2023-10-16
HRESULT CreatePartitionEx(ULONGLONG ullOffset, ULONGLONG ullSize, ULONG ulAlign,  [in]   CREATE_PARTITION_PARAMETERS *para, IVdsAsync **ppAsync
)

当我传递参数 ppAsync = NULL 时,perticular 调用失败并返回 INVALIED 参数。

请帮我解决这个问题。

根据文档,关于最后一个参数 - ppAsync

VDS 初始化的 IVdsAsync 接口指针的地址 返回时。调用方必须释放接口。使用此指针 取消、等待或查询操作的状态。

这意味着在调用函数时应提供一个实际指针作为最后一个参数。由于您提供的是 NULL,因此可能导致问题。

编辑

像这样使用:

IVdsAsync *pAsync;    // Declare a pointer
// Then use it like this (take a look at the last parameter)
CreatePartitionEx(
    ullOffset,
    ullSize,
    ulAlign,
    para,
    &pAsync);    // You pass it with a leading &, which gives you the address of the pointer

这应该可以做到。

请记住,如文档所述,您应该在完成pAsync后将其释放。

我正在用 Createvolume(( 做同样的事情,但它返回的 hResult= E_InvalidArg 。第四个参数是 条纹大小 。如果类型为 VDS_VT_STRIPE 或 VDS_VT_PaARITY,则 Windows 实现要求条带大小为 65536。其他卷类型不条带化,条带大小为 0。