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

IJolietDiscMaster

COM
IIDe3bc42ce-4e5c-11d3-9144-00104ba11c5e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IJolietDiscMaster インターフェースは、CD データディスクのステージングを可能にします。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetTotalDataBlocks(INT* pnBlocks)

Joliet データディスクのステージングに使用できるブロックの総数を取得します。

pnBlocksINT*outディスク上で使用可能なデータブロックの総数。

戻り値

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

vtbl 4 HRESULT GetUsedDataBlocks(INT* pnBlocks)

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

pnBlocksINT*outステージングされたイメージ内で使用中のデータブロックの総数。

戻り値

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

vtbl 5 HRESULT GetDataBlockSize(INT* pnBlockBytes)

データブロックのサイズを取得します。

pnBlockBytesINT*out単一のデータブロックの合計サイズ (バイト単位)。

戻り値

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

解説(Remarks)

このメソッドは 2048 を返します。

vtbl 6 HRESULT AddData(IStorage* pStorage, INT lFileOverwrite)

ルートストレージの内容を、ステージングされたイメージファイルに追加します。このストレージは列挙され、すべてのサブストレージとストリームがステージングイメージファイルのルートファイルシステムに配置されます。サブストレージはフォルダーになり、ストリームはファイルになります。

pStorageIStorage*inoptionalサブ項目をステージングされたイメージファイルのルートに追加する対象のストレージへのパス。
lFileOverwriteINTinこのパラメーターが 0 以外の場合、同じ名前の既存ファイルを上書きします。それ以外の場合は、最後に追加されたファイルがディレクトリに表示されます。

戻り値

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

解説(Remarks)

AddData 操作を繰り返す場合、重複するファイルを含むフォルダーでは lFileOverwrite が評価されます。このフラグが 0 以外であれば、ファイルは上書きされます。名前が競合する以前のファイルも、イメージファイルからディスクへ書き込まれます。lFileOverwrite が 0 で、同じ名前のファイルが既に存在する場合、 AddDataIMAPI_E_FILEEXISTS で失敗します。

IDiscMaster::SetActiveDiscRecorder を呼び出した後は AddData を複数回呼び出せますが、新しいイメージを開始するときは必ず、また最初の AddData 呼び出しの直前に SetActiveDiscRecorder を呼び出す必要があります。これは、使用するレコーダーが前回のイメージ作成で使用したものと同じかどうかにかかわらず必要です。

このメソッドの呼び出しによって使用可能なデータブロック数を超過する場合、メソッドは IMAPI_E_DISCFULL を返し、追加しようとしたデータをすべて無視します。これにより、最終的な Joliet ファイルシステムが破損しないことが保証されます。

vtbl 7 HRESULT GetJolietProperties(IPropertyStorage** ppPropStg)

Joliet プロパティを格納する IPropertyStorage インターフェースへのポインターを取得します。

ppPropStgIPropertyStorage**out現在定義されているすべてのプロパティを含む Joliet プロパティセットの IPropertyStorage インターフェースへのポインターのアドレス。

戻り値

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

解説(Remarks)

プロパティは IMAPI が閉じられた後は保持されません。プロパティセットは ID/TYPE/VALUE の組み合わせと ID/NAME の関連付けを格納できるため、IMAPI にとって便利です。それぞれの組み合わせが 1 つのプロパティであり、IMAPI はこれらのプロパティを Joliet インターフェース固有の値として使用します。たとえば、Joliet インターフェースは VolumeName プロパティをサポートします。

呼び出し元は、 SetJolietProperties を呼び出すことでこれらのプロパティを変更できます。現在のプロパティには次のものがあります。

vtbl 8 HRESULT SetJolietProperties(IPropertyStorage* pPropStg)

Joliet プロパティを設定します。

pPropStgIPropertyStorage*inoptional各種プロパティの新しい設定を Joliet インターフェースが取得するために使用できる IPropertyStorage インターフェースへのポインター。

戻り値

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

解説(Remarks)

アプリケーションは、 GetJolietProperties を呼び出してプロパティセットを取得し、必要な設定のみを変更してから SetJolietProperties を呼び出して、すべての値を同時に変更してください。

一部のプロパティは読み取り専用です。読み取り専用のプロパティとサポートされていないプロパティは、いずれもエラーを発生させることなく無視されます (IMAPI_S_PROPERTIESIGNORED を参照)。たとえば、このインターフェースにプロパティセットを渡して ClearlyNeverHeardOfBefore プロパティを変更しようとした場合、ClearlyNeverHeardOfBefore は不明な値であるため、そのプロパティは無視され、メソッドは成功します。

SetJolietProperties を呼び出した後、アプリケーションは GetJolietProperties を呼び出してプロパティ設定を確認する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IJolietDiscMaster "{E3BC42CE-4E5C-11D3-9144-00104BA11C5E}"
#usecom global IJolietDiscMaster IID_IJolietDiscMaster "{}"
#comfunc global IJolietDiscMaster_GetTotalDataBlocks   3 var
#comfunc global IJolietDiscMaster_GetUsedDataBlocks    4 var
#comfunc global IJolietDiscMaster_GetDataBlockSize     5 var
#comfunc global IJolietDiscMaster_AddData              6 sptr,int
#comfunc global IJolietDiscMaster_GetJolietProperties  7 sptr
#comfunc global IJolietDiscMaster_SetJolietProperties  8 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。