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


Преобразование файла DRM-Protected в поток Windows Media DRM 10 для сетевых устройств

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения источника и записью приемника . движок чтения Source Reader и движок записи Sink Writer оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код средства чтения исходного кода и записи приемников вместо пакета SDK для Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

После регистрации и проверки устройства можно начать обработку сообщений запроса лицензий. Сообщения запроса лицензии отправляются устройствами, когда требуется действие из приложения. Единственное действие, поддерживаемое в настоящее время, — "Воспроизведение", которое является запросом на безопасные данные для воспроизведения.

При получении сообщения запроса лицензии выполните следующие действия.

  1. Выполните разбор сообщения запроса лицензии, вызвав метод IWMDRMMessageParser::ParseLicenseRequestMsg.
  2. Получите интерфейс IWMRegisteredDevice для устройства, вызвав метод IWMDeviceRegistration::GetRegisteredDeviceByID, передав сертификат и серийный номер, полученный на шаге 1.
  3. Убедитесь, что устройство готово к получению безопасных данных:
    • Вызовите IWMRegisteredDevice::IsApproved, чтобы убедиться, что устройство утверждено. Утверждение всегда должно основываться на предпочтениях пользователя.
    • Вызовите IWMRegisteredDevice::IsValid, чтобы убедиться, что устройство было проверено за последние 48 часов. Если устройство является недействительным, необходимо выполнить обнаружение вблизи. Дополнительные сведения см. в разделе Выполнение обнаружения близости.
    • Вызовите IWMRegisteredDevice::IsOpened, чтобы убедиться, что устройство было открыто. Если устройство не открыто, его можно открыть, вызвав IWMRegisteredDevice::Open. На компьютере одновременно можно открыть только 10 устройств. Возможно, вам потребуется закрыть другое устройство, прежде чем открыть его для обработки запроса. Чтобы закрыть устройство, вызовите метод IWMRegisteredDevice::Close.
  4. Создайте экземпляр объекта трансшифратора DRM, вызвав функцию WMCreateDRMTranscryptor.
  5. Вызовите метод IWMDRMTranscryptor::Initialize для инициализации трансшифратора. Этот метод принимает указатель на реализацию интерфейса IWMStatusCallback, который используется для доставки сообщений о состоянии. Этот метод также возвращает сообщение запроса лицензии, которое необходимо отправить устройству перед продолжением.
  6. Когда метод IWMStatusCallback::OnStatus получает сообщение о состоянии WMT_TRANSCRYPTOR_INIT, вызовите метод IWMDRMTranscryptor::Seek для поиска соответствующей начальной позиции в файле. Чтобы начать с начала файла, необходимо вызвать Seek с параметром времени 0.
  7. Трансшифратор отправляет сообщение WMT_TRANSCRYPTOR_SEEKED, когда оно готово к доставке данных из файла в новое время презентации. Выполните повторные вызовы метода IWMDRMTranscryptor::Read для получения преобразованных блоков данных мультимедиа. Каждый вызов является асинхронным и не будет завершен до получения сообщения WMT_TRANSCRYPTOR_READ. При получении сообщения можно отправить данные на принимающее устройство.
  8. При получении сообщения WMT_TRANSCRYPTOR_READ с параметром hr задано значение NS_S_TRANSCRYPTOR_EOF, весь файл считывается. На этом этапе вызовите метод IWMDRMTranscryptor::Close, чтобы закрыть файл и бесплатные ресурсы.
  9. После получения сообщения WMT_TRANSCRYPTOR_CLOSED можно освободить интерфейс IWMDRMTranscryptor.

Заметка

DRM не поддерживается версией этого пакета SDK на основе x64.

 

Использование протокола Windows Media DRM 10 для сетевых устройств