Взаимодействие с IMAPI

Ниже описано типичное взаимодействие между приложением и IMAPI.

  1. Создайте экземпляр MSDiscMasterObj (используя CoCreateInstance, смарт-указатели из импорта и т. д.) и запросите интерфейс IDiscMaster.
  2. Получение доступа к IMAPI путем вызова IDiscMaster::Open. Если этот вызов выполнен успешно, приложение имеет полный доступ ко всем интерфейсам и методам, реализованным в MSDiscMasterObj.
  3. Получение перечислителя основного формата диска с помощью EnumDiscMasterFormats. Перечислите набор форматов, поддерживаемых главным объектом диска, а затем выберите активный формат. Форматы, возвращаемые перечислителем, — это идентификаторы интерфейсов для IJolietDiscMaster и IRedbookDiscMaster.
  4. Получите перечислитель дисков с помощью EnumDiscRecorders. Перечислите список поддерживаемых дисковых записей (относящихся к активному формату), а затем выберите активный рекордер. Интерфейс IDiscRecorder представляет физическое устройство.
  5. Используйте IDiscMaster::ProgressAdvise для регистрации обратных вызовов хода выполнения.
  6. Используйте интерфейс для выбранного формата для создания содержимого. Содержимое строится постепенно, поэтому треки или содержимое папки можно добавлять в диск по фрагменту. Создание этого содержимого называется промежуточногоизображения. Содержимое поставленного образа не может быть постепенно удалено (нельзя удалить добавленную дорожку), но можно очистить содержимое поставленного образа, чтобы установка могла начаться заново. Используйте IDiscMaster::ClearFormatContent для перезагрузки буферизации.

**Для аудио: **

  1. Используйте IRedbookDiscMaster::CreateAudioTrack, чтобы указать, что на диске запущена новая звуковая дорожка.
  2. Используйте IRedbookDiscMaster::AddAudioTrackBlocks для добавления необработанных звуковых данных в трек. Приложение может использовать GetAvailableAudioTrackBlocks, GetTotalAudioBlocksи GetUsedAudioBlocks для получения статистических сведений.
  3. Используйте IRedbookDiscMaster::CloseAudioTrack, чтобы закрыть звуковую дорожку.
  4. Повторяйте шаги 1-3 до тех пор, пока не закончится место или не будут записаны все звуковые дорожки.

**Для данных: **

  1. Используйте IJolietDiscMaster::AddData, чтобы добавить содержимое папки в изображение. Элементы в папке помещаются в корневой каталог файла изображения. Используйте GetTotalDataBlocks и GetUsedDataBlocks для получения статистических сведений.
  2. Повторяйте указанный выше шаг до тех пор, пока не закончится место или не будут добавлены все данные.

**Для всех дисков: **

  1. Используйте IDiscMaster::RecordDisc для записи диска.
  2. Закройте сеанс IMAPI с помощью IDiscMaster::Close. Закрытие сеанса очищает содержимое хранилища дисков.