Преобразование файла 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, если это возможно.]
После регистрации и проверки устройства можно начать обработку сообщений запроса лицензий. Сообщения запроса лицензии отправляются устройствами, когда требуется действие из приложения. Единственное действие, поддерживаемое в настоящее время, — "Воспроизведение", которое является запросом на безопасные данные для воспроизведения.
При получении сообщения запроса лицензии выполните следующие действия.
- Выполните разбор сообщения запроса лицензии, вызвав метод IWMDRMMessageParser::ParseLicenseRequestMsg.
- Получите интерфейс IWMRegisteredDevice для устройства, вызвав метод IWMDeviceRegistration::GetRegisteredDeviceByID, передав сертификат и серийный номер, полученный на шаге 1.
- Убедитесь, что устройство готово к получению безопасных данных:
- Вызовите IWMRegisteredDevice::IsApproved, чтобы убедиться, что устройство утверждено. Утверждение всегда должно основываться на предпочтениях пользователя.
- Вызовите IWMRegisteredDevice::IsValid, чтобы убедиться, что устройство было проверено за последние 48 часов. Если устройство является недействительным, необходимо выполнить обнаружение вблизи. Дополнительные сведения см. в разделе Выполнение обнаружения близости.
- Вызовите IWMRegisteredDevice::IsOpened, чтобы убедиться, что устройство было открыто. Если устройство не открыто, его можно открыть, вызвав IWMRegisteredDevice::Open. На компьютере одновременно можно открыть только 10 устройств. Возможно, вам потребуется закрыть другое устройство, прежде чем открыть его для обработки запроса. Чтобы закрыть устройство, вызовите метод IWMRegisteredDevice::Close.
- Создайте экземпляр объекта трансшифратора DRM, вызвав функцию WMCreateDRMTranscryptor.
- Вызовите метод IWMDRMTranscryptor::Initialize для инициализации трансшифратора. Этот метод принимает указатель на реализацию интерфейса IWMStatusCallback, который используется для доставки сообщений о состоянии. Этот метод также возвращает сообщение запроса лицензии, которое необходимо отправить устройству перед продолжением.
- Когда метод IWMStatusCallback::OnStatus получает сообщение о состоянии WMT_TRANSCRYPTOR_INIT, вызовите метод IWMDRMTranscryptor::Seek для поиска соответствующей начальной позиции в файле. Чтобы начать с начала файла, необходимо вызвать Seek с параметром времени 0.
- Трансшифратор отправляет сообщение WMT_TRANSCRYPTOR_SEEKED, когда оно готово к доставке данных из файла в новое время презентации. Выполните повторные вызовы метода IWMDRMTranscryptor::Read для получения преобразованных блоков данных мультимедиа. Каждый вызов является асинхронным и не будет завершен до получения сообщения WMT_TRANSCRYPTOR_READ. При получении сообщения можно отправить данные на принимающее устройство.
- При получении сообщения WMT_TRANSCRYPTOR_READ с параметром hr задано значение NS_S_TRANSCRYPTOR_EOF, весь файл считывается. На этом этапе вызовите метод IWMDRMTranscryptor::Close, чтобы закрыть файл и бесплатные ресурсы.
- После получения сообщения WMT_TRANSCRYPTOR_CLOSED можно освободить интерфейс IWMDRMTranscryptor.
Заметка
DRM не поддерживается версией этого пакета SDK на основе x64.
Связанные разделы