HRESULT CreatePartitionEx(ULONGLONG ullOffset, ULONGLONG ullSize, ULONG ulAlign, [in] CREATE_PARTITION_PARAMETERS *para, IVdsAsync **ppAsync
)
パラメータppAsync = NULL
を渡すと、特定の呼び出しが失敗し、INVALIED引数が返されます。
この問題を解決するのを手伝ってください。
私は Createvolume() で同じことをしていますが、 hResult= E_InvalidArg を返します。4 番目のパラメーターはストライプ サイズです。Windows の実装では、タイプが VDS_VT_STRIPE または VDS_VT_PaARITY の場合、ストライプ サイズを 65536 にする必要があります。他のボリューム タイプはストライプ化されておらず、ストライプ サイズは 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
ドキュメントに記載されているように、作業が終了したらリリースする必要があることに注意してください。