与 IMAPI 交互

以下步骤描述了应用程序与 IMAPI 之间的典型交互。

  1. 使用 CoCreateInstance、导入中的智能指针等) 创建 MSDiscMasterObj (实例,并请求 IDiscMaster 接口。
  2. 通过调用 IDiscMaster::Open 获取对 IMAPI 的访问权限。 如果此调用成功,则应用程序对 MSDiscMasterObj 中实现的所有接口和方法具有完全访问权限。
  3. 使用 EnumDiscMasterFormats 检索光盘主格式枚举器。 枚举光盘主控形状对象支持的格式集,然后选择活动格式。 从枚举器返回的格式是 IJolietDiscMasterIRedbookDiscMaster 接口的 IID。
  4. 使用 EnumDiscRecorders 检索光盘记录器枚举器。 枚举特定于活动格式) (支持的光盘录制器列表,然后选择活动录制器。 IDiscRecorder 接口表示物理设备。
  5. 使用 IDiscMaster::P rogressAdvise 注册进度回调。
  6. 使用所选格式的 接口来生成内容。 内容以增量方式生成,因此可以将跟踪或文件夹内容逐个添加到光盘中。 构建此内容称为 暂存映像。 无法增量删除暂存映像的内容, (无法删除已) 添加的轨迹,但可以清除暂存映像的内容,以便重新开始暂存。 使用 IDiscMaster::ClearFormatContent 重启暂存。

**对于音频:**

  1. 使用 IRedbookDiscMaster::CreateAudioTrack 指示正在光盘上启动新的音轨。
  2. 使用 IRedbookDiscMaster::AddAudioTrackBlocks 将原始音频数据添加到曲目。应用程序可以使用 GetAvailableAudioTrackBlocksGetTotalAudioBlocksGetUsedAudioBlocks 来检索统计信息。
  3. 使用 IRedbookDiscMaster::CloseAudioTrack 关闭音频曲目。
  4. 重复步骤 1-3,直到空间不足或已写入所有音轨。

**对于数据:**

  1. 使用 IJolietDiscMaster::AddData 将文件夹的内容添加到图像。 文件夹中的项放置在图像文件的根目录中。 使用 GetTotalDataBlocksGetUsedDataBlocks 检索统计信息。
  2. 重复上述步骤,直到空间不足或添加所有数据。

**对于所有光盘:**

  1. 使用 IDiscMaster::RecordDisc 录制光盘。
  2. 使用 IDiscMaster::Close 关闭 IMAPI 会话。 关闭会话会清除光盘存放的内容。