IFileSystemImage2 インターフェイスを使用して、Imapi2 を使用して複数のブート レコードを持つ ISO を作成しようとしています。
これを行うには、タイプのput_BootImageOptionsArray
受け渡しを使用できる必要があります。つまり、各ブート オプション構成のタイプの COM ポインターです。短いデモとして、次のコードがあります (この場合は 1 つだけ作成しました)。SAFEARRAY*
VT_DISPATCH
IBootOptions
IBootOptions
SAFEARRAYBOUND bounds[1];
bounds[0].cElements = 1;
bounds[1].lLbound = 0;
IBootOptions* BootOptionsArrayData = NULL;
SAFEARRAY* Array = SafeArrayCreateEx(VT_DISPATCH,
1,
bounds,
(void*) &IID_IBootOptions);
hr = SafeArrayAccessData(Array,
reinterpret_cast<void**>(&BootOptionsArrayData));
BootOptionsArrayData = BootOptions; // BootOptions = IBootOptions*
hr = SafeArrayUnaccessData(Array);
hr = IsoImage->put_BootImageOptionsArray(Array);
しかし、何度電話put_BootImageOptionsArray
してもE_NOINTERFACE
返ってきます。
IsoImage は期待どおりに作成されています。
hr = CoCreateInstance(CLSID_MsftFileSystemImage,
NULL,
CLSCTX_ALL,
__uuidof(IFileSystemImage2),
(void**) &IsoImage);
IFileSystemImage2
から継承された機能を使用すると正常にIFileSystemImage
動作します。同様にCoCreateInstance
、IFileSystemImage
代わりにこのインターフェイスを使用することもできます。
WinDbg で自分のプロセスにアタッチし、でブレークポイントを設定しましたCMsftFileSystemImage::put_BootOptionsArray
が、この関数 (基になる実装) が呼び出されていません。
したがって、私の質問は単純です。実装はそこにあるように見えますが、呼び出すことができないようです。この特定の機能を使用した経験がある人はいますか?もしそうなら、どのように機能させましたか?