IMAPI との対話
次の手順では、アプリケーションと IMAPI の間の一般的な相互作用について説明します。
- MSDiscMasterObj のインスタンス (CoCreateInstance、インポートからのスマート ポインターなどを使用) を作成し、IDiscMaster インターフェイスを要求します。
- IDiscMaster::Open を呼び出して IMAPI へのアクセスを取得します。 この呼び出しが成功した場合、アプリケーションは MSDiscMasterObj に実装されているすべてのインターフェイスとメソッドにフル アクセスできます。
- EnumDiscMasterFormats を使用してディスク マスター形式列挙子を取得します。 ディスク マスター オブジェクトでサポートされている一連の形式を列挙し、アクティブな形式を選択します。 列挙子から返される形式は、 IJolietDiscMaster および IRedbookDiscMaster のインターフェイスの ID です。
- EnumDiscRecorders を使用してディスク レコーダー列挙子を取得します。 サポートされているディスク レコーダー (アクティブな形式に固有) の一覧を列挙し、アクティブなレコーダーを選択します。 IDiscRecorder インターフェイスは、物理デバイスを表します。
- IDiscMaster::P rogressAdvise を使用して、進行状況コールバックに登録します。
- 選択した形式のインターフェイスを使用して、コンテンツをビルドします。 コンテンツは段階的にビルドされるため、トラックまたはフォルダーの内容を 1 つずつディスクに追加できます。 このコンテンツをビルドすることは、 イメージのステージングと呼ばれます。 ステージングされたイメージの内容を段階的に削除することはできません (追加されたトラックを削除することはできません)、ステージングイメージの内容をクリアしてステージングを再開することができます。 IDiscMaster::ClearFormatContent を使用してステージングを再開します。
**オーディオの場合: **
- ディスクで新しいオーディオ トラックが開始されていることを示すには、 IRedbookDiscMaster::CreateAudioTrack を使用します。
- IRedbookDiscMaster::AddAudioTrackBlocks を使用して、未加工のオーディオ データをトラックに追加します。アプリケーションでは、GetAvailableAudioTrackBlocks、GetTotalAudioBlocks、GetUsedAudioBlocks を使用して統計情報を取得できます。
- IRedbookDiscMaster::CloseAudioTrack を使用してオーディオ トラックを閉じます。
- スペースが不足するか、すべてのオーディオ トラックが書き込まれるまで、手順 1 から 3 を繰り返します。
**データの場合: **
- IJolietDiscMaster::AddData を使用して、フォルダーの内容をイメージに追加します。 フォルダー内の項目は、イメージ ファイルのルートに配置されます。 統計情報を取得するには、 GetTotalDataBlocks と GetUsedDataBlocks を使用します。
- スペースが不足するか、すべてのデータが追加されるまで、上記の手順を繰り返します。
**すべてのディスクの場合: **
- ディスクを記録するには、IDiscMaster::RecordDisc を使用します。
- IDiscMaster::Close を使用して IMAPI セッションを閉じます。 セッションを閉じると、ディスク スタッシュの内容がクリアされます。