Поделиться через


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

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

  1. Создайте экземпляр MSDiscMasterObj (с помощью CoCreateInstance, интеллектуальных указателей из импорта и т. д.) и запросите интерфейс IDiscMaster .
  2. Получите доступ к IMAPI, вызвав IDiscMaster::Open. В случае успешного вызова приложение получит полный доступ ко всем интерфейсам и методам, реализованным в MSDiscMasterObj.
  3. Получите перечислитель формата диска master с помощью EnumDiscMasterFormats. Перечислите набор форматов, поддерживаемых объектом master диска, а затем выберите активный формат. Форматы, возвращаемые перечислителем, представляют собой идентификаторы IID интерфейсов для IJolietDiscMaster и IRedbookDiscMaster.
  4. Получите перечислитель средства записи дисков с помощью EnumDiscRecorders. Перечислите список поддерживаемых средств записи дисков (относящихся к активному формату), а затем выберите активное средство записи. Интерфейс IDiscRecorder представляет физическое устройство.
  5. Используйте IDiscMaster::P rogressAdvise для регистрации обратных вызовов хода выполнения.
  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. Закрытие сеанса очищает содержимое тайна диска.