0
HRESULT CreatePartitionEx(ULONGLONG ullOffset, ULONGLONG ullSize, ULONG ulAlign,  [in]   CREATE_PARTITION_PARAMETERS *para, IVdsAsync **ppAsync
)

パラメータppAsync = NULLを渡すと、特定の呼び出しが失敗し、INVALIED引数が返されます。

この問題を解決するのを手伝ってください。

4

2 に答える 2

0

私は Createvolume() で同じことをしていますが、 hResult= E_InvalidArg を返します。4 番目のパラメーターはストライプ サイズです。Windows の実装では、タイプが VDS_VT_STRIPE または VDS_VT_PaARITY の場合、ストライプ サイズを 65536 にする必要があります。他のボリューム タイプはストライプ化されておらず、ストライプ サイズは 0 です。

于 2012-08-23T08:55:13.947 に答える
0

documentationによると、最後のパラメータについて - 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ドキュメントに記載されているように、作業が終了したらリリースする必要があることに注意してください。

于 2012-08-23T05:44:38.903 に答える