Что означает код HRESULT 0xC00D273C (NS_E_DRM_GET_LICENSESTRING_ERROR)?

 
Предыдущий Следующий
NS_E_DRM_REPORT_ERROR NS_E_DRM_GET_CONTENTSTRING_ERROR

NS_E_DRM_GET_LICENSESTRING_ERROR

Как классифицировать этот результат

Когда клиент возвращает NS_E_DRM_GET_LICENSESTRING_ERROR (0xC00D273C), решающим условием является то, что Не удалось получить сериализованную строку лицензии. Этот результат относится к локальному хранилищу лицензий, защищённому хранилищу и привязке к компьютеру — защищённым репозиториям лицензий и состояния DRM, а также данным оборудования и контрольной точки, связывающим это состояние с одной установкой, применительно к состоянию «не удалось получить сериализованную строку лицензии».

Для NS_E_DRM_GET_LICENSESTRING_ERROR, встроенное сообщение описывает видимый пользователю результат, а символьное имя сохраняет точную границу WMDRM для диагностики. Для подтверждения этого кода зафиксируйте идентификатор лицензии, запрошенное представление и возвращённые длину и состояние.

Минимальная запись об инциденте

Зафиксируйте первое появление NS_E_DRM_GET_LICENSESTRING_ERROR до того, как автоматический повтор, завершение Player, восстановление хранилища или повторное получение лицензии изменит состояние. Минимальная полезная запись содержит:

  • Подтверждение для этого кода для состояния «не удалось получить сериализованную строку лицензии»: зафиксируйте идентичность лицензии, запрошенное представление и возвращённые длину и статус, при трассировке этой ошибки.
  • Защищённая идентичность для состояния «не удалось получить сериализованную строку лицензии»: первый сбойный вызов API хранилища: открытие, перечисление, сохранение, закрытие или запрос, на границе состояния «не удалось получить сериализованную строку лицензии».
  • Состояние операции для состояния «не удалось получить сериализованную строку лицензии»: идентификатор лицензии и идентификатор ключа содержимого KID, при диагностике состояния «не удалось получить сериализованную строку лицензии».
  • Хранилище или транспорт для состояния «не удалось получить сериализованную строку лицензии»: путь хранилища, поколение файла, результат доступа и базовую системную ошибку, при диагностике состояния «не удалось получить сериализованную строку лицензии».
  • Контекст безопасности для состояния «не удалось получить сериализованную строку лицензии»: аппаратную идентичность и последнее изменение оборудования или операционной системы, для результата «не удалось получить сериализованную строку лицензии».
  • Точка корреляции для состояния «не удалось получить сериализованную строку лицензии»: последовательность сохранения контрольной точки, защищённого хранилища и данных реестра, при диагностике состояния «не удалось получить сериализованную строку лицензии».

При расследовании «не удалось получить сериализованную строку лицензии» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. Во время диагностики NS_E_DRM_GET_LICENSESTRING_ERROR, не помещайте в обычные журналы ключи содержимого, полные блоки лицензий, пароли, cookie или расшифрованные мультимедиа.

Почему важен уровень, вернувший код

Для NS_E_DRM_GET_LICENSESTRING_ERROR. После получения лицензия сохраняется в защищённом локальном хранилище, поэтому ошибка хранилища отличается от отказа сервера выдать лицензию, применительно к состоянию «не удалось получить сериализованную строку лицензии». Состояние, привязанное к компьютеру, нельзя безопасно диагностировать копированием файлов хранилища между компьютерами или удалением оригинала до сохранения доказательств, применительно к состоянию «не удалось получить сериализованную строку лицензии».

Первичная диагностика без уничтожения данных

  1. Найдите самый ранний возврат API, обратный вызов или событие, содержащее NS_E_DRM_GET_LICENSESTRING_ERROR и 0xC00D273C.
  2. Для NS_E_DRM_GET_LICENSESTRING_ERROR, определите точное поколение объекта содержимого, лицензии, хранилища, устройства или миграции, участвующее в «не удалось получить сериализованную строку лицензии».
  3. Для NS_E_DRM_GET_LICENSESTRING_ERROR, определите, возникло ли «не удалось получить сериализованную строку лицензии» до сетевого обмена, при проверке ответа, во время применения политики или при фиксации защищённого состояния.
  4. Выполните проверку для этого кода: зафиксируйте идентификатор лицензии, запрошенное представление и возвращённые длину и состояние.
  5. Внесите одно точечное исправление — замените повреждённую или недоступную запись лицензии либо получите её повторно — и повторите ту же операцию, формировавшую ошибку.

Почему важно символьное имя

РезультатДругая граница
NS_E_DRM_GET_LICENSE_ERRORНе удалось получить лицензию из локального хранилища, при диагностике состояния «не удалось получить сериализованную строку лицензии».
NS_E_DRM_LICENSE_CLOSE_ERRORНе удалось закрыть объект лицензии, для результата «не удалось получить сериализованную строку лицензии».
NS_E_DRM_LICENSE_OPEN_ERRORНе удалось открыть объект лицензии, при диагностике состояния «не удалось получить сериализованную строку лицензии».

Одно условие «не удалось получить сериализованную строку лицензии» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_GET_LICENSESTRING_ERROR по временным меткам и отдавайте приоритет первому коду, полученному на самой низкой конкретной границе, а не более позднему сводному результату уровня Player.

Сокращения пути, ухудшающие диагностику для состояния «не удалось получить сериализованную строку лицензии»

  • Не копируйте защищённое хранилище лицензий с другого компьютера как способ исправления, с учётом состояния «не удалось получить сериализованную строку лицензии». Это изменит доказательства и не покажет, почему NS_E_DRM_GET_LICENSESTRING_ERROR .
  • Не удаляйте и не сбрасывайте состояние DRM до сохранения хэшей, временных меток и первой ошибки хранилища, применительно к состоянию «не удалось получить сериализованную строку лицензии». Для NS_E_DRM_GET_LICENSESTRING_ERROR, такой подход может создать дополнительную проблему хранилища, идентификации или политики.
  • Не сводите NS_E_DRM_GET_LICENSESTRING_ERROR до фразы «сбой DRM» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентификатор объекта.

Восстановление на правильном уровне

Для NS_E_DRM_GET_LICENSESTRING_ERROR, исправление состоит в следующем: замените повреждённую или недоступную запись лицензии либо получите её повторно. Сохраните исходный заголовок содержимого, хранилище или материалы миграции для NS_E_DRM_GET_LICENSESTRING_ERROR до тех пор, пока операция «не удалось получить сериализованную строку лицензии» не завершится успешно и результат не сохранится после создания нового объекта приложения или обязательного перезапуска.

Показательный случай: Метаданные лицензии найдены, но сериализовать строку лицензии не удаётся.

Критерии завершения

После исправления пересоздайте объект WMDRM и выполните минимальный пример для NS_E_DRM_GET_LICENSESTRING_ERROR. Убедитесь, что 0xC00D273C больше не возникает, требуемое лицензионное действие завершается, а вместо него не появляется предупреждение хранилища, сертификата, часов или миграции.

Практическое примечание для этого кода

Символьная фраза «не удалось получить сериализованную строку лицензии» является важным ключом поиска и телеметрии для NS_E_DRM_GET_LICENSESTRING_ERROR. Храните её рядом с точным значением 0xC00D273C; официальное сообщение о том, что лицензии уже сохранены в этом расположении, полезно пользователю, но само по себе не определяет ответственный API, поколение объекта или защищённую идентичность.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.