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

IFileSystemImage

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID2c941fe1-975b-59be-a960-9a2a262853a5継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

このインターフェイスは、ファイルシステムイメージの構築、セッションパラメーターの設定、およびイメージのインポートまたはエクスポートに使用します。

解説(Remarks)

スクリプトで CFileSystemImage オブジェクトを作成するには、CreateObject の呼び出し時にプログラム識別子として IMAPI2.MsftFileSystemImage を指定します。

メソッド 50

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

vtbl 7 HRESULT get_Root(IFsiDirectoryItem** pVal)

ルートディレクトリ項目を取得します。

pValIFsiDirectoryItem**outルートディレクトリ項目の IFsiDirectoryItem インターフェイス。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

vtbl 8 HRESULT get_SessionStartBlock(INT* pVal)

記録セッションの開始ブロックアドレスを取得します。

pValINT*out記録セッションの開始ブロックアドレス。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

セッションの開始ブロックは、次の方法で設定できます。

vtbl 9 HRESULT put_SessionStartBlock(INT newVal)

記録セッションの開始ブロックアドレスを設定します。

newValINTin新しい記録セッションのブロック番号。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。

解説(Remarks)

直前のセッションがインポートされている場合、セッションの開始ブロックを手動で変更することはできません。

vtbl 10 HRESULT get_FreeMediaBlocks(INT* pVal)

イメージに使用できるブロックの最大数を取得します。

pValINT*outファイルシステムイメージの作成に使用するブロック数。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 11 HRESULT put_FreeMediaBlocks(INT newVal)

イメージに使用できるブロックの最大数を設定します。

newValINTin

ファイルシステムイメージの作成に使用するブロック数。

既定では、332,800 ブロックを使用してファイルシステムイメージが作成されます。この値は、650MB のディスクあたり 74 分のオーディオ容量を前提としています。

ブロック数を無制限にするには、newVal に 0 を設定します。

戻り値

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

リターンコード 説明
IMAPI_E_IMAGE_TOO_BIG
FreeMediaBlocks プロパティに指定された値が、現在のデータに基づく推定イメージサイズに対して小さすぎます。

値: 0xC0AAB121

vtbl 12 HRESULT SetMaxMediaBlocksFromDevice(IDiscRecorder2* discRecorder)

レコーダーの機能に基づいて、使用できるブロックの最大数を設定します。

discRecorderIDiscRecorder2*in使用できるブロックの最大数の取得元となる記録デバイスを識別する IDiscRecorder2 インターフェイス。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_FSI_INTERNAL_ERROR
内部エラーが発生しました: %1!ls!
vtbl 13 HRESULT get_UsedBlocks(INT* pVal)

使用中のブロック数を取得します。

pValINT*outファイルシステムイメージで使用されているブロック数の推定値。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 14 HRESULT get_VolumeName(LPWSTR* pVal)

このファイルシステムイメージのボリューム名を取得します。

pValLPWSTR*outこのファイルシステムイメージのボリューム名を含む文字列。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

ボリューム名を設定するには、IFileSystemImage::put_VolumeName メソッドを呼び出します。

vtbl 15 HRESULT put_VolumeName(LPWSTR newVal)

このファイルシステムイメージのボリューム名を設定します。

newValLPWSTRinこのファイルシステムイメージのボリューム名を含む文字列。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_VOLUME_NAME
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

解説(Remarks)

文字列は 15 文字までに制限されます。ISO 9660 ディスクの場合、ボリューム名には次の文字を使用できます。

Joliet ディスクおよび UDF ディスクの場合、ボリューム名には次の文字を使用できます。 ボリューム名を指定しない場合は、結果オブジェクトの作成時のシステム日時を使用して既定のボリューム名が生成されます。
vtbl 16 HRESULT get_ImportedVolumeName(LPWSTR* pVal)

インポートされたファイルシステムから提供されるボリューム名を取得します。

pValLPWSTR*outインポートされたファイルシステムから提供されるボリューム名を含む文字列。ファイルシステムがインポートされるまでは NULL です。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

インポートされたボリューム名はユーザーへの情報提供のために用意されているもので、後続のセッションに自動的に引き継がれることはありません。

vtbl 17 HRESULT get_BootImageOptions(IBootOptions** pVal)

ファイルシステムイメージに追加するブートイメージを取得します。

pValIBootOptions**outディスクに追加するブートイメージの IBootOptions インターフェイス。ブートイメージが指定されていない場合は NULL です。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

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

値: 0xC0AAB149

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

値: 0xC0AAB148

vtbl 18 HRESULT put_BootImageOptions(IBootOptions* newVal)

ファイルシステムイメージに追加するブートイメージを設定します。このメソッドは、渡された IBootOptions インターフェイスからストリームをコピーすることで、ブートオプションの完全なコピーを作成します。

newValIBootOptions*inファイルシステムイメージに追加するブートイメージの IBootOptions インターフェイス。NULL を指定できます。

戻り値

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

リターンコード 説明
IMAPI_E_BOOT_OBJECT_CONFLICT
ブートオブジェクトを含めることができるのは、最初のディスクイメージのみです。

値: 0xC0AAB149

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

値: 0xC0AAB148

解説(Remarks)

ブートイメージを指定できるのは、ファイルシステムイメージに以前のセッションが存在しない場合のみです。ブートイメージはディスクの先頭セクターから開始する必要があります。

vtbl 19 HRESULT get_FileCount(INT* pVal)

ファイルシステムイメージ内のファイル数を取得します。

pValINT*outファイルシステムイメージ内のファイル数。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 20 HRESULT get_DirectoryCount(INT* pVal)

ファイルシステムイメージ内のディレクトリ数を取得します。

pValINT*outファイルシステムイメージ内のディレクトリ数。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 21 HRESULT get_WorkingDirectory(LPWSTR* pVal)

スタッシュファイルが構築される一時ディレクトリを取得します。

pValLPWSTR*out一時ディレクトリのパスを含む文字列。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 22 HRESULT put_WorkingDirectory(LPWSTR newVal)

スタッシュファイルが構築される一時ディレクトリを設定します。

newValLPWSTRin一時作業ディレクトリのパスを含む文字列。既定値は現在の temp ディレクトリです。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_INVALID_WORKING_DIRECTORY
作業ディレクトリ %1!ls! は有効ではありません。

値: 0xC0AAB140

IMAPI_E_WORKING_DIRECTORY_SPACE
作業ディレクトリを %1!ls! に設定できません。使用可能な領域は %2!I64d! バイトですが、およそ %3!I64d! バイトが必要です。

値: 0xC0AAB141

解説(Remarks)

スタッシュファイルは、ファイルシステムイメージの構築に使用される一時ファイルです。

既存のスタッシュファイルを新しい作業ディレクトリに移動できない場合は、例外が発生します。

ファイルシステムイメージの結果ストリームが存在する場合、作業ディレクトリを変更することはできません。

vtbl 23 HRESULT get_ChangePoint(INT* pVal)

変更ポイント識別子を取得します。

pValINT*out変更ポイント識別子。この識別子は、ファイルシステムイメージの作成開始以降に加えられた変更の回数を表します。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

アプリケーションは、ファイルシステムを変更する前にこのプロパティの値を保存しておき、後でその値を IFileSystemImage::RollbackToChangePoint メソッドに渡すことで、その時点以降の変更を元に戻すことができます。

アプリケーションは IFileSystemImage::LockInChangePoint メソッドを呼び出して、構築途中の任意の時点でファイルシステムイメージの状態をロックできます。いったんロックを設定すると、RollbackToChangePoint を呼び出してファイルシステムイメージを以前の状態に戻すことはできません。

vtbl 24 HRESULT get_StrictFileSystemCompliance(VARIANT_BOOL* pVal)

ファイルシステムイメージの作成および構築における準拠レベルを決定します。(Get)

pValVARIANT_BOOL*out

ファイルシステムイメージが該当する規格に厳密に準拠して作成される場合は VARIANT_TRUE です。

IMAPI バージョン 1.0 との互換性のために準拠基準が緩和されている場合は VARIANT_FALSE です。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 25 HRESULT put_StrictFileSystemCompliance(VARIANT_BOOL newVal)

ファイルシステムイメージの作成および構築における準拠レベルを決定します。(Put)

newValVARIANT_BOOLin

該当する規格に厳密に準拠してファイルシステムイメージを作成するには、VARIANT_TRUE を設定します。VARIANT_TRUE を指定できるのは、ファイルシステムイメージが空の場合のみです。

IMAPI バージョン 1.0 との互換性のために準拠基準を緩和するには、VARIANT_FALSE を設定します。

既定値は VARIANT_FALSE です。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。

解説(Remarks)

このプロパティが VARIANT_TRUE の場合に、ファイルシステムの制約に違反する操作をメソッドが要求すると、例外がスローされます。

vtbl 26 HRESULT get_UseRestrictedCharacterSet(VARIANT_BOOL* pVal)

ファイル名およびディレクトリ名に制限された文字セットを使用するかどうかを判断します。

pValVARIANT_BOOL*outファイルシステムイメージに追加するファイル名およびディレクトリ名が、CP_ANSI (コードポイント 32 ~ 127) に直接対応する文字で構成されている必要がある場合は VARIANT_TRUE です。それ以外の場合は VARIANT_FALSE です。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 27 HRESULT put_UseRestrictedCharacterSet(VARIANT_BOOL newVal)

ファイル名およびディレクトリ名を CP_ANSI 文字のみに制限するかどうかを決定します。

newValVARIANT_BOOLinファイル名およびディレクトリ名を CP_ANSI 文字のみに制限するには VARIANT_TRUE を設定します。それ以外の場合は VARIANT_FALSE を設定します。既定値は VARIANT_FALSE です。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。

解説(Remarks)

このプロパティを設定しても、既にファイルシステムイメージに含まれているファイルやディレクトリには影響しません。

このプロパティの値を変更できるのは、結果ストリームがアクティブでない場合のみです。

vtbl 28 HRESULT get_FileSystemsToCreate(FsiFileSystems* pVal)

結果ストリームの生成時に作成するファイルシステムの種類を取得します。

pValFsiFileSystems*out結果ストリームの生成時に作成する 1 つ以上のファイルシステムの種類。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

ファイルシステムの種類を指定するには、IFileSystemImage::put_FileSystemsToCreate メソッドを呼び出します。IFilesystemImage::ChooseImageDefaults または IFilesystemImage::ChooseImageDefaultsForMediaType を呼び出して、IMAPI にファイルシステムを選択させることもできます。

サポートされているファイルシステムの種類の一覧を取得するには、IFileSystemImage::get_FileSystemsSupported メソッドを呼び出します。

vtbl 29 HRESULT put_FileSystemsToCreate(FsiFileSystems newVal)

結果ストリームの生成時に作成するファイルシステムを設定します。

newValFsiFileSystemsin結果ストリームの生成時に作成する 1 つ以上のファイルシステム。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_TOO_MANY_DIRS
このファイルシステムイメージには、%1!ls! ファイルシステムに対してディレクトリが多すぎます。

値: 0xC0AAB130

IMAPI_E_FILE_SYSTEM_CHANGE_NOT_ALLOWED
インポートされたセッションのファイルシステムと新しいセッションのファイルシステムが一致しないため、作成対象として指定したファイルシステムを変更できません。

値: 0xC0AAB163L

IMAPI_E_ISO9660_LEVELS
ISO9660 ではディレクトリの階層は 8 レベルまでに制限されています。

値: 0xC0AAB131

IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION
インポートされたセッションのファイルシステムと現在のセッションのファイルシステムが一致しないため、作成対象として指定したファイルシステムを変更できません。

値: 0xC0AAB133

IMAPI_S_IMAGE_FEATURE_NOT_SUPPORTED
この機能は現在のファイルシステムのリビジョンではサポートされていません。この機能を使用せずにイメージが作成されます。

値: 0x00AAB15FL

解説(Remarks)

直前のセッションが IFileSystemImage::ImportFileSystem または IFileSystemImage::ImportSpecificFileSystem を使用してインポートされており、そのセッションのレイアウトが、IFileSystemImage::put_FileSystemToCreatenewVal で指定されたファイルシステムに対して IMAPI が使用するレイアウトと互換性がない場合、このメソッドは IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION を返します。

ファイルシステムを変更できるのは、結果ストリームがアクティブでない場合のみです。

vtbl 30 HRESULT get_FileSystemsSupported(FsiFileSystems* pVal)

クライアントがファイルシステムイメージの構築に使用できるファイルシステムの種類の一覧を取得します。

pValFsiFileSystems*outクライアントがファイルシステムイメージの構築に使用できる 1 つ以上のファイルシステムの種類。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 31 HRESULT put_UDFRevision(INT newVal)

ファイルシステムイメージの UDF リビジョンレベルを設定します。

newValINTinUDF リビジョンレベルを表す 16 進数。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

解説(Remarks)

値は UDF 仕様に従ってエンコードされますが、変数のサイズは LONG です。たとえば、リビジョンレベル 1.02 は 0x102 と表されます。

このプロパティは、新しいファイルシステムイメージの UDF リビジョンを指定するために使用します。ファイルシステムがインポートされている場合、このメソッドを呼び出して UDF リビジョンレベルを変更することはできません。

サポートされている UDF リビジョンレベルを確認するには、IFileSystemImage::get_UDFRevisionsSupported メソッドを呼び出します。

vtbl 32 HRESULT get_UDFRevision(INT* pVal)

インポートされたファイルシステムイメージの UDF リビジョンレベルを取得します。

pValINT*outインポートされたファイルシステムイメージの UDF リビジョンレベル。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

値は UDF 仕様に従ってエンコードされますが、変数のサイズは LONG です。たとえば、リビジョンレベル 1.02 は 0x102 と表されます。

vtbl 33 HRESULT get_UDFRevisionsSupported(SAFEARRAY** pVal)

サポートされている UDF リビジョンレベルの一覧を取得します。

pValSAFEARRAY**outサポートされている UDF リビジョンレベルの一覧。一覧の各要素は VARIANT です。バリアントの型は VT_I4 です。バリアントの lVal メンバーにリビジョンレベルが格納されます。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

値は UDF 仕様に従ってエンコードされますが、変数のサイズは LONG です。たとえば、リビジョンレベル 1.02 は 0x102 と表されます。

vtbl 34 HRESULT ChooseImageDefaults(IDiscRecorder2* discRecorder)

現在のメディアに基づいて、既定のファイルシステムの種類とイメージサイズを設定します。

discRecorderIDiscRecorder2*in現在のメディアが入っているデバイスを識別する IDiscRecorder2

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

E_IMAPI_RECORDER_MEDIA_INCOMPATIBLE
メディアに互換性がないか、物理フォーマットが不明です。

値: 0xC0AA0203

IMAPI_E_IMAGE_TOO_BIG
FreeMediaBlocks プロパティに指定された値が、現在のデータに基づく推定イメージサイズに対して小さすぎます。

値: 0xC0AAB121

IMAPI_E_NO_SUPPORTED_FILE_SYSTEM
指定されたディスクには、サポートされているファイルシステムのいずれも含まれていません。

値: 0xC0AAB151

vtbl 35 HRESULT ChooseImageDefaultsForMediaType(IMAPI_MEDIA_PHYSICAL_TYPE value)

指定されたメディアの種類に基づいて、既定のファイルシステムの種類とイメージサイズを設定します。

valueIMAPI_MEDIA_PHYSICAL_TYPEin書き込みイメージの書き込み先となる物理メディアの種類を識別します。指定可能な値については、IMAPI_MEDIA_PHYSICAL_TYPE 列挙型を参照してください。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_IMAGE_TOO_BIG
FreeMediaBlocks プロパティに指定された値が、現在のデータに基づく推定イメージサイズに対して小さすぎます。

値: 0xC0AAB121

vtbl 36 HRESULT put_ISO9660InterchangeLevel(INT newVal)

ファイルシステムイメージの ISO9660 互換性レベルを設定します。

newValINTinファイルシステムイメージの ISO9660 互換性レベル。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

解説(Remarks)

サポートされている互換性レベルを確認するには、IFileSystemImage::get_ISO9660InterchangeLevelsSupported メソッドを呼び出します。

このプロパティは、IFileSystemImage::put_FileSystemsToCreate の呼び出し時に FsiFileSystemISO9660 を指定した場合にのみ意味を持ちます。

vtbl 37 HRESULT get_ISO9660InterchangeLevel(INT* pVal)

結果イメージの作成時に使用する ISO9660 互換性レベルを取得します。

pValINT*outISO9660 ファイルシステムのインターチェンジレベルを示します。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

サポートされている互換性レベルの一覧を取得するには、IFileSystemImage::get_ISO9660InterchangeLevelsSupported メソッドを呼び出します。

vtbl 38 HRESULT get_ISO9660InterchangeLevelsSupported(SAFEARRAY** pVal)

サポートされている ISO9660 互換性レベルを取得します。

pValSAFEARRAY**outサポートされている ISO9660 互換性レベルの一覧。一覧の各項目は、サポートされるインターチェンジレベルを 1 つ示す VARIANT です。バリアントの型は VT_UI4 です。バリアントの ulVal メンバーに互換性レベルが格納されます。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 39 HRESULT CreateResultImage(IFileSystemImageResult** resultStream)

ファイルシステムとファイルデータを含む結果オブジェクトを作成します。

resultStreamIFileSystemImageResult**out

イメージ結果の IFileSystemImageResult インターフェイス。

クライアントアプリケーションは、このイメージをメディアや、ディスクドライブなどの長期保存用デバイスにストリーミングできます。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

解説(Remarks)

現在の実装では、直前に IFileSystemImage::IdentifyFileSystemsOnDisc メソッドを呼び出していると、IFileSystemImage::CreateResultImage はディスクメディアへのアクセスを必要とします。この問題を回避するには、IFileSystemImage::IdentifyFileSystemsOnDisc の操作専用に別の IFileSystemImage オブジェクトを作成することをお勧めします。

ファイルシステムが単一のセッションで生成され、開始アドレスが 0 である場合、生成されたストリームは ISO ファイルとして保存できます。

vtbl 40 HRESULT Exists(LPWSTR fullPath, FsiItemType* itemType)

指定したファイルまたはディレクトリが存在するかどうかを確認します。

fullPathLPWSTRin確認するディレクトリまたはファイルの完全修飾パスを含む文字列。
itemTypeFsiItemType*out項目がファイルであるか、ディレクトリであるか、または存在しないかを示します。指定可能な値については、FsiItemType 列挙型を参照してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_INVALID_PATH
指定されたパスが完全修飾されていません。パスは、イメージのルート、またはディレクトリ構造内でのイメージの位置を示すために、'\\' または '/' で始まる必要があります。

値: 0xC0AAB110

IMAPI_E_DIR_NOT_FOUND
ディレクトリ '%1!s!' が FileSystemImage の階層内に見つかりません。

値: 0xC0AAB11A

E_NOINTERFACE
オブジェクトはこのインターフェイスをサポートしていません。

値: 0x80004002

vtbl 41 HRESULT CalculateDiscIdentifier(LPWSTR* discIdentifier)

ディスクと、そのディスクに記録されたセッションを識別する文字列を取得します。

discIdentifierLPWSTR*outディスクとそのディスク上のセッションを識別するシグネチャを含む文字列。この文字列は、ディスク間で一意であることが保証されるものではありません。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_MULTISESSION_NOT_SET
このメソッドを呼び出す前に MultisessionInterfaces プロパティを設定する必要があります。

値: 0xC0AAB15D

解説(Remarks)

ディスク上にセッションを重ねて記録する際、このシグネチャは、クライアントがセッションの順序を確実にしたり、ディスク上のセッションとこれからディスクに書き込むセッションイメージを区別したりするためのキーとして機能します。

CalculateDiscIdentifier を呼び出す前に、IFileSystemImage::put_MultisessionInterfaces を呼び出す必要があります。

vtbl 42 HRESULT IdentifyFileSystemsOnDisc(IDiscRecorder2* discRecorder, FsiFileSystems* fileSystems)

光学メディア上に存在するファイルシステムの種類の一覧を取得します。

discRecorderIDiscRecorder2*inメディアが入っている記録デバイスを識別する IDiscRecorder2 インターフェイス。このパラメーターが NULL の場合は、IMultisession で指定された discRecorder が使用されます。
fileSystemsFsiFileSystems*outディスク上の 1 つ以上のファイルシステム。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

クライアントアプリケーションは、このメソッドが返した値を指定して IFileSystemImage::GetDefaultFileSystemForImport を呼び出すことで、インポートするファイルシステムの種類を判断できます。

vtbl 43 HRESULT GetDefaultFileSystemForImport(FsiFileSystems fileSystems, FsiFileSystems* importDefault)

既定でインポートするファイルシステムを取得します。

fileSystemsFsiFileSystemsin1 つ以上のファイルシステムの値。指定可能な値については、FsiFileSystems 列挙型を参照してください。
importDefaultFsiFileSystems*out既定のファイルシステムを示す単一のファイルシステムの値。この値は、fileSystems で指定されたファイルシステムのいずれかです。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

解説(Remarks)

IFileSystemImage::ImportFileSystem で使用する既定のファイルシステムを特定するには、このメソッドを使用します。

サポートされているファイルシステムを特定するには、IFileSystemImage::get_FileSystemsSupported メソッドを呼び出します。

vtbl 44 HRESULT ImportFileSystem(FsiFileSystems* importedFileSystem)

現在のディスク上の既定のファイルシステムをインポートします。

importedFileSystemFsiFileSystems*outインポートされたファイルシステムを示します。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_MULTISESSION_NOT_SET
このメソッドを呼び出す前に MultisessionInterfaces プロパティを設定する必要があります。

値: 0xC0AAB15D

IMAPI_E_EMPTY_DISC
光学メディアが空です。

値: 0xC0AAB150

IMAPI_E_NO_SUPPORTED_FILE_SYSTEM
指定されたディスクには、サポートされているファイルシステムのいずれも含まれていません。

値: 0xC0AAB151

Note これらのファイルシステムは実際にはこの操作でサポートされている可能性が高いのですが、低レベルでは、ImportFileSystem の呼び出し時に IMAPI2 が汎用的な例外/エラー処理を行い、エラー 0xC0AAB151 を返します。ディスクを排他アクセスで取得できない場合や、その他の理由でアクセスが拒否された場合には、このエラーは報告されません。
IMAPI_E_BOOT_OBJECT_CONFLICT
ブートオブジェクトを含めることができるのは、最初のディスクイメージのみです。

値: 0xC0AAB149

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

IMAPI_E_IMAGE_TOO_BIG
FreeMediaBlocks プロパティに指定された値が、現在のデータに基づく推定イメージサイズに対して小さすぎます。

値: 0xC0AAB121

IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_NO_COMPATIBLE_MULTISESSION_TYPE
現在のメディアで提供されているマルチセッションの種類は、いずれも IMAPI ではサポートされていません。

値: 0xC0AAB15C

Note IFileSystemImage::ImportFileSystem メソッドは、記録デバイスにメディアが入っていない場合にこのエラーを返します。
IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION
メディアからインポートされた直前のセッションのレイアウトに互換性がないため、操作に失敗しました。

値: 0xC0AAB133

解説(Remarks)

IFileSystemImage::ImportFileSystem を呼び出す前に、IFileSystemImage::put_MultisessionInterfaces を呼び出す必要があります。さらに、IFileSystemImage::put_MultisessionInterfaces の前に IDiscFormat2::get_MediaHeuristicallyBlank を呼び出して、メディアが空でないことを確認することをお勧めします。

ディスクに複数のファイルシステムが含まれている場合、インポートされるファイルシステムは 1 つだけです。このメソッドは、UDF、Joliet、ISO 9660 の順序でインポートするファイルシステムを選択します。 インポートでは、ディレクトリとファイルがメモリ内のファイルシステム構造に転送されます。

このメソッドは、メモリ内ファイルシステムの構築中であればいつでも呼び出せます。 インポート中に、メモリ内のコピーに同じファイルまたはディレクトリが既に存在する場合は、メモリ内のバージョンが保持され、インポートされるファイルは破棄されます。

ディスクの既定のファイルシステムを確認するには、IFileSystemImage::GetDefaultFileSystemForImport メソッドを呼び出します。

このメソッドはファイル情報のみを読み取ります。項目がファイルの場合、ファイルデータは IFsiDirectoryItem::AddFileIFsiDirectoryItem::AddTree、または IFsiDirectoryItem::Add メソッドの呼び出し時にコピーされます。

最後のセッションにサポートされているファイルシステムが見つからない場合、このメソッドは IMAPI_E_NO_SUPPORTED_FILE_SYSTEM を返します。 また、最後のセッションのファイルシステムのレイアウトが、結果イメージ用に要求されたファイルシステムを作成する際に IMAPI が使用するレイアウトと互換性がない場合、このメソッドは IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION を返します。詳細については、IFileSystemImage::put_FileSystemsToCreate メソッドのドキュメントを参照してください。

vtbl 45 HRESULT ImportSpecificFileSystem(FsiFileSystems fileSystemToUse)

ディスクから特定のファイルシステムをインポートします。

fileSystemToUseFsiFileSystemsinインポートするファイルシステムを示します。指定可能な値については、FsiFileSystems 列挙型を参照してください。

戻り値

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

リターンコード 説明
IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

IMAPI_E_MULTISESSION_NOT_SET
このメソッドを呼び出す前に MultisessionInterfaces プロパティを設定する必要があります。

値: 0xC0AAB15D

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

値: 0xC0AAB149

IMAPI_E_EMPTY_DISC
光学メディアが空です。

値: 0xC0AAB150

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

IMAPI_E_NO_COMPATIBLE_MULTISESSION_TYPE
現在のメディアで提供されているマルチセッションの種類は、いずれも IMAPI ではサポートされていません。

値: 0xC0AAB15C

Note IFileSystemImage::ImportFileSystem メソッドは、記録デバイスにメディアが入っていない場合にこのエラーを返します。
IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION
メディアからインポートされた直前のセッションのレイアウトに互換性がないため、操作に失敗しました。

値: 0xC0AAB133

IMAPI_E_FILE_SYSTEM_NOT_FOUND
指定されたディスクには '%1!ls!' ファイルシステムが含まれていません。

値: 0xC0AAB152

IMAPI_E_INVALID_PATH
インポート対象として指定されたファイルシステムに、無効なファイル名が含まれています。

値: 0xC0AAB110

解説(Remarks)

IFileSystemImage::ImportSpecificFileSystem を呼び出す前に、IFileSystemImage::put_MultisessionInterfaces を呼び出す必要があります。さらに、IFileSystemImage::put_MultisessionInterfaces の前に IDiscFormat2::get_MediaHeuristicallyBlank を呼び出して、メディアが空でないことを確認することをお勧めします。

このメソッドは、メモリ内ファイルシステムの構築中であればいつでも呼び出せます。 インポート中に、メモリ内のコピーに同じファイルまたはディレクトリが既に存在する場合は、メモリ内のバージョンが保持され、インポートされるファイルは破棄されます。

書き換え可能なメディア (DVD+/-RW、DVDRAM、BD-RE) では、最初のセッションが ISO9660 ファイルシステムの場合、ファイルシステム上の制約により 2 番目のセッションのインポートや書き込みはサポートされません。

このメソッドはファイル情報のみを読み取ります。項目がファイルの場合、ファイルデータは IFsiDirectoryItem::AddFileIFsiDirectoryItem::AddTree、または IFsiDirectoryItem::Add メソッドの呼び出し時にコピーされます。

最後のセッションのファイルシステムのレイアウトが、結果イメージ用に要求されたファイルシステムを作成する際に IMAPI が使用するレイアウトと互換性がない場合、このメソッドは IMAPI_E_INCOMPATIBLE_PREVIOUS_SESSION を返します。詳細については、IFileSystemImage::put_FileSystemsToCreate メソッドのドキュメントを参照してください。 fileSystemToUse で指定されたファイルシステムが見つからない場合、このメソッドは IMAPI_E_FILE_SYSTEM_NOT_FOUND を返します。

vtbl 46 HRESULT RollbackToChangePoint(INT changePoint)

イメージを指定した変更ポイントの状態に戻します。

changePointINTinロールバック先の状態を示す変更ポイント。

戻り値

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

リターンコード 説明
IMAPI_E_TOO_MANY_DIRS
このファイルシステムイメージには、%1!ls! ファイルシステムに対してディレクトリが多すぎます。

値: 0xC0AAB130

IMAPI_E_ISO9660_LEVELS
ISO9660 ではディレクトリの階層は 8 レベルまでに制限されています。

値: 0xC0AAB131

解説(Remarks)

通常、アプリケーションはファイルシステムを変更する前に IFileSystemImage::get_ChangePoint メソッドを呼び出して変更ポイントの値を保存します。必要に応じて、その変更ポイントの値をこのメソッドに渡すことで、その時点以降の変更を元に戻すことができます。

アプリケーションは IFileSystemImage::LockInChangePoint メソッドを呼び出して、構築途中の任意の時点でファイルシステムイメージの状態をロックできます。ロックを設定した後は、このメソッドを呼び出してファイルシステムイメージを以前の状態に戻すことはできません。

vtbl 47 HRESULT LockInChangePoint()

現在の変更ポイントのレベルでファイルシステム情報をロックします。

戻り値

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

リターンコード 説明
IMAPI_E_FSI_INTERNAL_ERROR
内部エラーが発生しました: %1!ls!

解説(Remarks)

変更ポイントをロックすると、それ以前の変更ポイントへのロールバックは許可されなくなります。

変更ポイントをロックしても、IFileSystemImage::get_ChangePoint プロパティは変化しません。

vtbl 48 HRESULT CreateDirectoryItem(LPWSTR name, IFsiDirectoryItem** newItem)

指定した名前のディレクトリ項目を作成します。

nameLPWSTRin作成するディレクトリ項目の名前を含む文字列。
newItemIFsiDirectoryItem**out新しいディレクトリ項目の IFsiDirectoryItem インターフェイス。 使用が終わったら、IFsiDirectoryItem::Release メソッドを呼び出してインターフェイスを解放します。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_INVALID_PARAM
パラメーター %1!ls! に指定された値が有効ではありません。

値: 0xC0AAB101

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

解説(Remarks)

IFsiDirectoryItem インターフェイスのプロパティを設定した後、親ディレクトリ項目に対して IFsiDirectoryItem::Add メソッドを呼び出し、ファイルシステムイメージに追加します。

vtbl 49 HRESULT CreateFileItem(LPWSTR name, IFsiFileItem** newItem)

指定した名前のファイル項目を作成します。

nameLPWSTRin作成するファイル項目の名前を含む文字列。
newItemIFsiFileItem**out新しいファイル項目の IFsiFileItem インターフェイス。 使用が終わったら、IFsiFileItem::Release メソッドを呼び出してインターフェイスを解放します。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_INVALID_PARAM
指定された name が有効ではありません。

値: 0xC0AAB101

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

解説(Remarks)

IFsiFileItem インターフェイスのプロパティを設定した後、親ディレクトリ項目に対して IFsiDirectoryItem::Add メソッドを呼び出し、ファイルシステムイメージに追加します。

vtbl 50 HRESULT get_VolumeNameUDF(LPWSTR* pVal)

UDF システムイメージのボリューム名を取得します。

pValLPWSTR*outUDF システムイメージのボリューム名を含む文字列。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 51 HRESULT get_VolumeNameJoliet(LPWSTR* pVal)

Joliet システムイメージのボリューム名を取得します。

pValLPWSTR*outJoliet システムイメージのボリューム名を含む文字列。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 52 HRESULT get_VolumeNameISO9660(LPWSTR* pVal)

ISO9660 システムイメージのボリューム名を取得します。

pValLPWSTR*outISO9660 システムイメージのボリューム名を含む文字列。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

vtbl 53 HRESULT get_StageFiles(VARIANT_BOOL* pVal)

ファイルシステムイメージに追加されるファイルを、書き込み前にステージングする必要があるかどうかを示します。

pValVARIANT_BOOL*outファイルシステムイメージに追加されるファイルを、書き込み前に 1 つ以上のステージファイルにステージングする必要がある場合は VARIANT_TRUE。ファイルシステムイメージに追加されるファイルをステージングせずに IMAPI がイメージ作成処理を最適化してもよい場合は、VARIANT_FALSE が返されます。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

解説(Remarks)

「ステージング」とは、書き込み操作を開始する前に、書き込む対象のすべてのファイルを含むイメージをハードディスク上に作成する処理です。

IFileSystemImage::put_StageFiles でこのプロパティを VARIANT_TRUE に設定した場合、影響を受けるのはプロパティを設定した後に追加されたファイルのみで、それらのファイルは常にステージングされます。プロパティに VARIANT_TRUE を指定する前にステージングされていなかったファイルは、ステージングされません。

VARIANT_FALSE を指定すると、ファイルシステムイメージの作成処理が次の 2 つの点で最適化されます。

ただし、書き込み中のバッファーアンダーランを回避するには、ステージングされていないファイルの読み取り操作について一定の最小スループットが必要です。ファイルへのアクセス可能性やスループットがライターの要件を満たさない可能性がある場合、IMAPI は指定されたプロパティ値にかかわらずファイルのステージングを強制します。たとえば、USB フラッシュディスクなどのリムーバブルストレージデバイス上のソースファイルについては、ファイルのステージングが強制されます。
vtbl 54 HRESULT put_StageFiles(VARIANT_BOOL newVal)

ファイルシステムイメージに追加されるファイルを、書き込み前にステージングするかどうかを決定します。

newValVARIANT_BOOLinファイルシステムイメージに追加されるファイルを、書き込み前に 1 つ以上のステージファイルへ強制的にステージングするには VARIANT_TRUE を設定します。ステージングが不要で、より高いパフォーマンスを求める場合は VARIANT_FALSE を設定します。

戻り値

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

リターンコード 説明
E_NOTIMPL
実装されていません。

値: 0x80004001

解説(Remarks)

「ステージング」とは、書き込み操作を開始する前に、書き込む対象のすべてのファイルを含むイメージをハードディスク上に作成する処理です。

このプロパティを VARIANT_TRUE に設定した場合、影響を受けるのはプロパティを設定した後に追加されたファイルのみで、それらのファイルは常にステージングされます。プロパティに VARIANT_TRUE を指定する前にステージングされていなかったファイルは、ステージングされません。

VARIANT_FALSE を指定すると、ファイルシステムイメージの作成処理が次の 2 つの点で最適化されます。

ただし、書き込み中のバッファーアンダーランを回避するには、ステージングされていないファイルの読み取り操作について一定の最小スループットが必要です。ファイルへのアクセス可能性やスループットがライターの要件を満たさない可能性がある場合、IMAPI は指定されたプロパティ値にかかわらずファイルのステージングを強制します。たとえば、USB フラッシュディスクなどのリムーバブルストレージデバイス上のソースファイルについては、ファイルのステージングが強制されます。
vtbl 55 HRESULT get_MultisessionInterfaces(SAFEARRAY** pVal)

光学メディア用のマルチセッションインターフェイスの一覧を取得します。

pValSAFEARRAY**out光学メディア用のマルチセッションインターフェイスの一覧。一覧の各要素は VT_Dispatch 型の VARIANT です。バリアントの pdispVal メンバーに対して IMultisession インターフェイスをクエリしてください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

E_OUTOFMEMORY
必要なメモリを割り当てられませんでした。

値: 0x8007000E

解説(Remarks)

IMultisession インターフェイスに対して、派生した IMultisession インターフェイス (たとえば IMultisessionSequential インターフェイス) をクエリしてください。

vtbl 56 HRESULT put_MultisessionInterfaces(SAFEARRAY* newVal)

光学メディア用のマルチセッションインターフェイスの一覧を設定します。

newValSAFEARRAY*in光学メディア用のマルチセッションインターフェイスの一覧。一覧の各要素は、型が VT_DISPATCH の VARIANT です。マルチセッションインターフェイスに対して IDispatch インターフェイスをクエリし、バリアントの pdispVal メンバーにその IDispatch インターフェイスを設定してください。

戻り値

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

リターンコード 説明
E_POINTER
ポインターが有効ではありません。

値: 0x80004003

IMAPI_E_INCOMPATIBLE_MULTISESSION_TYPE
要求されたマルチセッションの種類は IMAPI ではサポートされていません。

値: 0xC0AAB15B

IMAPI_E_IMPORT_MEDIA_NOT_ALLOWED
IMAPI は現在のメディアの種類でのマルチセッションを許可していません。

値: 0xC0AAB159

IMAPI_E_NO_COMPATIBLE_MULTISESSION_TYPE
現在のメディアで提供されているマルチセッションの種類は、いずれも IMAPI ではサポートされていません。

値: 0xC0AAB15C

IMAPI_E_BAD_MULTISESSION_PARAMETER
マルチセッションのパラメーターのいずれかを取得できないか、値が正しくありません。

値: 0xC0AAB162

IMAPI_E_FSI_INTERNAL_ERROR
内部エラーが発生しました: %1!ls!。

値: 0xC0AAB100

IMAPI_E_IMPORT_SEEK_FAILURE
ソースディスク上のブロック %1!I64d! にシークできません。この値は、光学メディアが空の場合にも返されます。

値: 0xC0AAB156

Note IUnknown::QueryInterface メソッドが返す値が、ここで返されることもあります。

解説(Remarks)

このメソッドは、マルチセッションの種類に互換性があることを検証します。次のいずれかの場合にメソッドは成功します。

メディアが上書き可能 (DVD+/-RW、BD-RE など) でない限り、メディアが空の場合、このメソッドは失敗します。また、IMultisession::put_InUse プロパティが VARIANT_TRUE に設定された IMultisession インターフェイスが一覧に複数含まれている場合や、派生 IMultisession インターフェイスが IFileSystemImage の実装でサポートされていない場合も失敗します。現在、IFileSystemImage の実装でサポートされている IMultisession の派生インターフェイスは IMultisessionSequential のみです。

例については、マルチセッションディスクの作成 を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IFileSystemImage "{2C941FE1-975B-59BE-A960-9A2A262853A5}"
#usecom global IFileSystemImage IID_IFileSystemImage "{}"
#comfunc global IFileSystemImage_get_Root                               7 sptr
#comfunc global IFileSystemImage_get_SessionStartBlock                  8 var
#comfunc global IFileSystemImage_put_SessionStartBlock                  9 int
#comfunc global IFileSystemImage_get_FreeMediaBlocks                    10 var
#comfunc global IFileSystemImage_put_FreeMediaBlocks                    11 int
#comfunc global IFileSystemImage_SetMaxMediaBlocksFromDevice            12 sptr
#comfunc global IFileSystemImage_get_UsedBlocks                         13 var
#comfunc global IFileSystemImage_get_VolumeName                         14 var
#comfunc global IFileSystemImage_put_VolumeName                         15 wstr
#comfunc global IFileSystemImage_get_ImportedVolumeName                 16 var
#comfunc global IFileSystemImage_get_BootImageOptions                   17 sptr
#comfunc global IFileSystemImage_put_BootImageOptions                   18 sptr
#comfunc global IFileSystemImage_get_FileCount                          19 var
#comfunc global IFileSystemImage_get_DirectoryCount                     20 var
#comfunc global IFileSystemImage_get_WorkingDirectory                   21 var
#comfunc global IFileSystemImage_put_WorkingDirectory                   22 wstr
#comfunc global IFileSystemImage_get_ChangePoint                        23 var
#comfunc global IFileSystemImage_get_StrictFileSystemCompliance         24 var
#comfunc global IFileSystemImage_put_StrictFileSystemCompliance         25 int
#comfunc global IFileSystemImage_get_UseRestrictedCharacterSet          26 var
#comfunc global IFileSystemImage_put_UseRestrictedCharacterSet          27 int
#comfunc global IFileSystemImage_get_FileSystemsToCreate                28 var
#comfunc global IFileSystemImage_put_FileSystemsToCreate                29 int
#comfunc global IFileSystemImage_get_FileSystemsSupported               30 var
#comfunc global IFileSystemImage_put_UDFRevision                        31 int
#comfunc global IFileSystemImage_get_UDFRevision                        32 var
#comfunc global IFileSystemImage_get_UDFRevisionsSupported              33 var
#comfunc global IFileSystemImage_ChooseImageDefaults                    34 sptr
#comfunc global IFileSystemImage_ChooseImageDefaultsForMediaType        35 int
#comfunc global IFileSystemImage_put_ISO9660InterchangeLevel            36 int
#comfunc global IFileSystemImage_get_ISO9660InterchangeLevel            37 var
#comfunc global IFileSystemImage_get_ISO9660InterchangeLevelsSupported  38 var
#comfunc global IFileSystemImage_CreateResultImage                      39 sptr
#comfunc global IFileSystemImage_Exists                                 40 wstr,var
#comfunc global IFileSystemImage_CalculateDiscIdentifier                41 var
#comfunc global IFileSystemImage_IdentifyFileSystemsOnDisc              42 sptr,var
#comfunc global IFileSystemImage_GetDefaultFileSystemForImport          43 int,var
#comfunc global IFileSystemImage_ImportFileSystem                       44 var
#comfunc global IFileSystemImage_ImportSpecificFileSystem               45 int
#comfunc global IFileSystemImage_RollbackToChangePoint                  46 int
#comfunc global IFileSystemImage_LockInChangePoint                      47
#comfunc global IFileSystemImage_CreateDirectoryItem                    48 wstr,sptr
#comfunc global IFileSystemImage_CreateFileItem                         49 wstr,sptr
#comfunc global IFileSystemImage_get_VolumeNameUDF                      50 var
#comfunc global IFileSystemImage_get_VolumeNameJoliet                   51 var
#comfunc global IFileSystemImage_get_VolumeNameISO9660                  52 var
#comfunc global IFileSystemImage_get_StageFiles                         53 var
#comfunc global IFileSystemImage_put_StageFiles                         54 int
#comfunc global IFileSystemImage_get_MultisessionInterfaces             55 var
#comfunc global IFileSystemImage_put_MultisessionInterfaces             56 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。