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


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

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

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

  1. Анализ сообщения запроса лицензии путем вызова метода IWMDRMMessageParser::P arseLicenseRequestMsg .
  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 не поддерживается в 64-разрядной версии этого пакета SDK.

 

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