IRawCDImageCreator
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
このインターフェイスは、Disc-at-Once (DAO) モードで CD メディアに書き込むための RAW CD イメージを作成する際に使用します。このインターフェイスで作成したイメージは、IDiscFormat2RawCD インターフェイスを使用して CD メディアに書き込むことができます。
解説(Remarks)
このインターフェイスで作成したイメージは、後で使用するために永続的なストレージへ書き出すことも、CD メディアへ書き込むために IDiscFormat2RawCD インターフェイスへ直接渡すこともできます。
DVD メディアはこの種類の書き込みをサポートしていません。
このインターフェイスは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
メソッド 19
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
現在の設定に基づいて、最終的な IStream オブジェクトを作成します。
| resultStream | IStream** | out | 確定した IStream オブジェクトへのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
IRawCDImageCreator::CreateResultImage は一度しか呼び出すことができず、呼び出すとオブジェクトは読み取り専用になります。このオブジェクトに関連付けられたすべてのプロパティは読み取りは可能ですが、変更はできません。生成される IStream オブジェクトは MSF 95:00:00 から開始するディスクイメージとなり、これにより開始アドレスが異なる複数のメディアに対して単一のイメージを書き込めるようになります。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
指定された IStream オブジェクトを受け取り、そのインターフェイスポインターをイメージ内の次のトラックとして保存します。
| dataType | IMAPI_CD_SECTOR_TYPE | in | IMAPI_CD_SECTOR_TYPE で定義される、データの種類を示す値。IRawCDImageCreator::AddTrack メソッドがサポートするのは IMAPI_CD_SECTOR_AUDIO のみです。 |
| data | IStream* | in | 指定する IStream オブジェクトへのポインター。 |
| trackIndex | INT* | out | 新しいトラックに関連付けられる、1 から 99 の範囲の LONG 値。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
追加するトラックは、既存のすべてのトラックと互換性がある必要があります。制限事項については IMAPI_CD_SECTOR_TYPE 列挙型を参照してください。
データストリームは少なくとも 4 秒 (300 セクター) の長さが必要です。また、最終セクターが LBA 398,099 (MSF 88:29:74) を超えるようなデータストリームは指定できません。超えた場合、リードアウトが最大値である MSF 89:59:74 を超えてしまうためです。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
指定された IStream オブジェクトを受け取り、そのポインターをトラック 1 のプリギャップ用データとして使用するために保存します。
| data | IStream* | in | 指定する IStream オブジェクトへのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、イメージにトラックを追加する前にのみ呼び出すことができます。data ストリームは少なくとも 2 秒 (150 セクター) の長さが必要です。
data ストリームの最終セクターが LBA 397,799 (MSF 88:25:74) を超えないようにしてください。超えた場合、最小サイズのトラックとリードアウトを加えると最大値である MSF 89:59:74 を超えてしまうためです。さらに、最初のトラックの IMAPI_CD_SECTOR_TYPE の値は暗黙的に "Audio" として定義することを推奨します。この場合、生成された音声は、最初のトラックを再生してオーディオディスクの先頭まで「巻き戻す」ことでのみ聴くことができます。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
IStream によって提供されるカスタム R-W サブコードの追加を可能にします。指定するオブジェクトは、最終イメージ作成時に RAW ディスクイメージのセクター数 × 96 バイトに等しいサイズである必要があります。
| subcode | IStream* | in | サブコードデータ (1 セクターあたり 96 バイト)。最上位 2 ビットは P/Q ビットであるため、常にゼロである必要があります。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
IRawCDImageCreator::CreateResultImage を呼び出す前であれば、いつでも追加できます。IRawCDImageCreator::put_ResultingImageType が PQ のみを返すように設定されている場合、生成されるイメージでは RW サブコードが使用されないため、この呼び出しは失敗します。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
生成されるイメージファイルの種類を定義する値を設定します。
| value | IMAPI_FORMAT2_RAW_CD_DATA_SECTOR_TYPE | in | イメージファイルの種類を定義する IMAPI_FORMAT2_RAW_CD_DATA_SECTOR_TYPE 列挙型の値。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
IRawCDImageCreator::AddSubcodeRWGenerator で設定された値が NULL でない場合、生成されるイメージではサブコードが生成されないため、IMAPI_FORMAT2_RAW_CD_DATA_SECTOR_TYPE で定義される PQ_ONLY 型は有効な選択肢ではありません。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
生成されるイメージファイルの種類を指定する値を取得します。
| value | IMAPI_FORMAT2_RAW_CD_DATA_SECTOR_TYPE* | out | イメージファイルに現在設定されている種類を定義する IMAPI_FORMAT2_RAW_CD_DATA_SECTOR_TYPE 列挙型の値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
リードアウトの開始位置を示す LBA の値を取得します。このメソッドで得られた値をメディアの LastPossibleStartOfLeadout と比較することで、そのイメージをメディアに書き込めるかどうかを判断できます。
| value | INT* | out | リードアウトの開始位置を表す LBA の LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドを使用するには、イメージに少なくとも 1 つのトラックが追加されている必要があります。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
StartOfLeadoutLimit プロパティの値を設定します。
| value | INT | in | 現在の StartOfLeadoutLimit を表す LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
現在の StartOfLeadoutLimit プロパティの値を取得します。この値は、生成されるイメージが、StartOfLeadout がその LBA 以上であるメディアに収まる必要があるかどうかを指定します。
| value | INT* | out | 現在の StartOfLeadoutLimit を表す LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
"ギャップレスオーディオ" 記録を無効にするかどうかを指定する値を設定します。このプロパティの既定値は VARIANT_FALSE で、連続するオーディオトラック間での "ギャップレス" 記録を無効にします。
| value | VARIANT_BOOL | in | "ギャップレスオーディオ" を無効にするかどうかを指定する VARIANT_BOOL 値。VARIANT_FALSE を設定すると "ギャップレスオーディオ" は無効になり、VARIANT_TRUE を設定すると有効になります。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
無効な場合、既定ではオーディオトラック間に標準の 2 秒 (150 セクター) の無音ギャップが挿入されます。有効な場合は、前のオーディオトラックの最後の 2 秒分の音声データが次のオーディオトラックのプリギャップ領域にエンコードされ、トラック間をシームレスに移行できるようになります。
このプロパティ値は、イメージへのトラック追加を開始する前にのみ設定することを推奨します。開始後に変更すると、他のイメージプロパティに悪影響を及ぼす可能性があるためです。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
"ギャップレスオーディオ" 記録が無効かどうかを指定する現在の値を取得します。このプロパティの既定値は VARIANT_FALSE で、連続するオーディオトラック間での "ギャップレス" 記録を無効にします。
| value | VARIANT_BOOL* | out | "ギャップレスオーディオ" が無効かどうかを指定する VARIANT_BOOL 値。VARIANT_FALSE は "ギャップレスオーディオ" が無効であることを示し、VARIANT_TRUE は有効であることを示します。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
無効な場合、既定ではオーディオトラック間に標準の 2 秒 (150 セクター) の無音ギャップが挿入されます。有効な場合は、前のオーディオトラックの最後の 2 秒分の音声データが次のオーディオトラックのプリギャップ領域にエンコードされ、トラック間をシームレスに移行できるようになります。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
オーディオディスク全体に対する Media Catalog Number (MCN) を取得します。
| value | LPWSTR | in | オーディオディスクに関連付ける MCN を表す BSTR 値。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
返される MCN は 13 桁の 10 進数として書式設定されており、指定する際も同じ形式である必要があります。さらに、指定する MCN 値には有効なチェックサム桁 (最下位桁) が含まれている必要があり、そうでない場合は拒否されます。スクリプトとの互換性を高めるため、先頭のゼロは省略できます。たとえば "0123456789012" は "123456789012" と表現できます。
MCN 値の詳細については、MMC 仕様を参照してください。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
オーディオディスク全体に対する Media Catalog Number (MCN) を設定します。
| value | LPWSTR* | out | オーディオディスクに現在関連付けられている MCN を表す BSTR 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドが返す MCN は 13 桁の 10 進数として書式設定されており、IRawCDImageCreator::put_MediaCatalogNumber メソッドに指定する際も同じ形式である必要があります。さらに、IRawCDImageCreator::put_MediaCatalogNumber を通じて指定する MCN 値には有効なチェックサム桁 (最下位桁) が含まれている必要があり、そうでない場合は拒否されます。スクリプトとの互換性を高めるため、先頭のゼロは省略できます。たとえば "0123456789012" は "123456789012" と表現できます。
MCN 値の詳細については、MMC 仕様を参照してください。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
開始トラック番号を設定します。
| value | INT | in | 開始トラック番号を表す LONG 値。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このプロパティ値は、トラックを追加する前にのみ設定できます。このプロパティに 1 以外の値を設定した場合、イメージに追加するトラックはすべてオーディオトラックである必要があります。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
開始トラック番号を取得します。
| value | INT* | out | 開始トラック番号を表す LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このプロパティが 1 以外の値を保持している場合、イメージに追加するトラックはすべてオーディオトラックである必要があります。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
インデックス付きプロパティを取得します。どのトラックを照会するかを決定するインデックスとして、1 から 99 の範囲の LONG 値を受け取ります。返されたオブジェクトに対して、対象となるトラックごとのプロパティを照会または設定します。
| trackIndex | INT | in | 照会するトラックを指定するために使用する、1 から 99 の範囲の LONG 値。 |
| value | IRawCDImageTrackInfo** | out | 指定した trackInfo のインデックス値に対応するトラックの情報を格納する IRawCDImageTrackInfo オブジェクトへのポインターへのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
メディア上に存在するオーディオトラックの数を取得します。(IRawCDImageCreator.get_NumberOfExistingTracks)
| value | INT* | out | メディア上に現在存在するオーディオトラックの数を示す LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
既存トラック間のオーバーヘッドを含む、現在のメディア上で使用済みのセクター総数を取得します。
| value | INT* | out | メディア上で使用済みのセクター総数を示す LONG 値へのポインター。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
この値は、トラックの一部と見なされるデータを含む最後のセクターの LBA を表し、リードイン、リードアウト、および MSF 00:00:00 から MSF 00:02:00 までの 2 秒間といったオーバーヘッドは含みません。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
生成されるディスクの SCSI 形式の目次 (TOC) を取得します。
| value | SAFEARRAY** | out | 生成されるディスクの SCSI 形式の目次 (TOC)。この値の正確さは、すべてのイメージプロパティを設定した後に IRawCDImageCreator::get_ExpectedTableOfContents を呼び出すかどうかに依存します。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返される場合もあります。
解説(Remarks)
このメソッドは、イメージに少なくとも 1 つのトラックが追加された後にのみ呼び出すことができます。
このメソッドは、Windows Server 2003 with Service Pack 1 (SP1)、Windows XP with Service Pack 2 (SP2)、および Windows Vista では Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 ではネイティブにサポートされます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IRawCDImageCreator "{25983550-9D65-49CE-B335-40630D901227}" #usecom global IRawCDImageCreator IID_IRawCDImageCreator "{}" #comfunc global IRawCDImageCreator_CreateResultImage 7 sptr #comfunc global IRawCDImageCreator_AddTrack 8 int,sptr,var #comfunc global IRawCDImageCreator_AddSpecialPregap 9 sptr #comfunc global IRawCDImageCreator_AddSubcodeRWGenerator 10 sptr #comfunc global IRawCDImageCreator_put_ResultingImageType 11 int #comfunc global IRawCDImageCreator_get_ResultingImageType 12 var #comfunc global IRawCDImageCreator_get_StartOfLeadout 13 var #comfunc global IRawCDImageCreator_put_StartOfLeadoutLimit 14 int #comfunc global IRawCDImageCreator_get_StartOfLeadoutLimit 15 var #comfunc global IRawCDImageCreator_put_DisableGaplessAudio 16 int #comfunc global IRawCDImageCreator_get_DisableGaplessAudio 17 var #comfunc global IRawCDImageCreator_put_MediaCatalogNumber 18 wstr #comfunc global IRawCDImageCreator_get_MediaCatalogNumber 19 var #comfunc global IRawCDImageCreator_put_StartingTrackNumber 20 int #comfunc global IRawCDImageCreator_get_StartingTrackNumber 21 var #comfunc global IRawCDImageCreator_get_TrackInfo 22 int,sptr #comfunc global IRawCDImageCreator_get_NumberOfExistingTracks 23 var #comfunc global IRawCDImageCreator_get_LastUsedUserSectorInImage 24 var #comfunc global IRawCDImageCreator_get_ExpectedTableOfContents 25 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IRawCDImageCreator "{25983550-9D65-49CE-B335-40630D901227}" #usecom global IRawCDImageCreator IID_IRawCDImageCreator "{}" #comfunc global IRawCDImageCreator_CreateResultImage 7 sptr #comfunc global IRawCDImageCreator_AddTrack 8 int,sptr,sptr #comfunc global IRawCDImageCreator_AddSpecialPregap 9 sptr #comfunc global IRawCDImageCreator_AddSubcodeRWGenerator 10 sptr #comfunc global IRawCDImageCreator_put_ResultingImageType 11 int #comfunc global IRawCDImageCreator_get_ResultingImageType 12 sptr #comfunc global IRawCDImageCreator_get_StartOfLeadout 13 sptr #comfunc global IRawCDImageCreator_put_StartOfLeadoutLimit 14 int #comfunc global IRawCDImageCreator_get_StartOfLeadoutLimit 15 sptr #comfunc global IRawCDImageCreator_put_DisableGaplessAudio 16 int #comfunc global IRawCDImageCreator_get_DisableGaplessAudio 17 sptr #comfunc global IRawCDImageCreator_put_MediaCatalogNumber 18 wstr #comfunc global IRawCDImageCreator_get_MediaCatalogNumber 19 sptr #comfunc global IRawCDImageCreator_put_StartingTrackNumber 20 int #comfunc global IRawCDImageCreator_get_StartingTrackNumber 21 sptr #comfunc global IRawCDImageCreator_get_TrackInfo 22 int,sptr #comfunc global IRawCDImageCreator_get_NumberOfExistingTracks 23 sptr #comfunc global IRawCDImageCreator_get_LastUsedUserSectorInImage 24 sptr #comfunc global IRawCDImageCreator_get_ExpectedTableOfContents 25 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。