Win32 API 日本語リファレンス
ホームStorage.Imapi › IFileSystemImage2

IFileSystemImage2

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDd7644b2c-1537-4767-b62f-f1387b02ddfd継承元IFileSystemImage呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl57

公式ドキュメント

EFI/UEFI サポートに必要な複数のブートエントリやブートイメージを書き込むには、このインターフェイスを使用します。たとえば、Windows XP と Windows Vista の両方のブートストラップを備えたブートメディアなどです。

解説(Remarks)

ブートエントリは、このインターフェイスによって 1 ディスクあたり 32 個までに制限されます。 ブートイメージは、ブータブルディスクを作成するために IMAPIv2FS を呼び出す外部アプリケーションから IMAPIv2FS に提供する必要があります。

Section Entry Extension は、現時点では IMAPIv2FS でサポートされていません。

メソッド 2

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 57 HRESULT get_BootImageOptionsArray(SAFEARRAY** pVal)

ファイルシステムイメージの生成に使用されるブートオプション配列を取得します。

pValSAFEARRAY**outファイルシステムイメージの生成に使用されるブートイメージの IBootOptions インターフェイスのリストを格納するブートオプション配列へのポインター。リストの各要素は VT_DISPATCH 型の VARIANT です。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。

戻り値 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_BOOT_OBJECT_CONFLICT
ブートオブジェクトは初期ディスクイメージにのみ含めることができます。

値: 0xC0AAB149

IMAPI_E_BOOT_IMAGE_DATA
ブートオブジェクトをイメージに追加できませんでした。

値: 0xC0AAB148

解説(Remarks)

SAFEARRAY は 1 次元配列になります。ブートイメージが指定されていない場合は、サイズ 0 の配列が返されます。

vtbl 58 HRESULT put_BootImageOptionsArray(SAFEARRAY* newVal)

ファイルシステムイメージの生成に使用されるブートオプション配列を設定します。IFileSystemImage::put_BootImageOptions とは異なり、このメソッドはブートオプション配列の各要素の完全なコピーを作成せず、代わりに各要素への参照を使用します。

newValSAFEARRAY*inファイルシステムイメージの生成に使用されるブートイメージの IBootOptions インターフェイスのリスト。リストの各要素は VT_DISPATCH 型の VARIANT です。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。

戻り値 説明
E_NOINTERFACE
そのようなインターフェイスはサポートされていません。

値: 0x80004002

IMAPI_E_BOOT_OBJECT_CONFLICT
ブートオブジェクトは初期ディスクイメージにのみ含めることができます。

値: 0xC0AAB149

IMAPI_E_BOOT_IMAGE_DATA
ブートオブジェクトをイメージに追加できませんでした。

値: 0xC0AAB148

解説(Remarks)

SAFEARRAY は 1 次元配列である必要があります。サイズ 0 の配列も指定できますが、その場合は通常のブート不可能なディスクになります。

ディスク上のブートイメージの順序は、SAFEARRAY で指定された順序と一致します。ブートイメージの指定には put_BootImageOptionsArrayput_BootImageOptions の両方が使用され、後者の関数は作成されたディスクイメージが有効になる前に呼び出されます。

get_BootImageOptionsArray および get_BootImageOptions 関数は、put_BootImageOptionsArray または put_BootImageOptions の最後の呼び出しの結果を取得します。これらの関数の使用は同期する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IFileSystemImage2 "{D7644B2C-1537-4767-B62F-F1387B02DDFD}"
#usecom global IFileSystemImage2 IID_IFileSystemImage2 "{}"
#comfunc global IFileSystemImage2_get_BootImageOptionsArray  57 var
#comfunc global IFileSystemImage2_put_BootImageOptionsArray  58 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。