| Предыдущий | Следующий |
| 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. После получения лицензия сохраняется в защищённом локальном хранилище, поэтому ошибка хранилища отличается от отказа сервера выдать лицензию, применительно к состоянию «не удалось получить сериализованную строку лицензии». Состояние, привязанное к компьютеру, нельзя безопасно диагностировать копированием файлов хранилища между компьютерами или удалением оригинала до сохранения доказательств, применительно к состоянию «не удалось получить сериализованную строку лицензии».
Первичная диагностика без уничтожения данных
- Найдите самый ранний возврат API, обратный вызов или событие, содержащее
NS_E_DRM_GET_LICENSESTRING_ERRORи0xC00D273C. - Для
NS_E_DRM_GET_LICENSESTRING_ERROR, определите точное поколение объекта содержимого, лицензии, хранилища, устройства или миграции, участвующее в «не удалось получить сериализованную строку лицензии». - Для
NS_E_DRM_GET_LICENSESTRING_ERROR, определите, возникло ли «не удалось получить сериализованную строку лицензии» до сетевого обмена, при проверке ответа, во время применения политики или при фиксации защищённого состояния. - Выполните проверку для этого кода: зафиксируйте идентификатор лицензии, запрошенное представление и возвращённые длину и состояние.
- Внесите одно точечное исправление — замените повреждённую или недоступную запись лицензии либо получите её повторно — и повторите ту же операцию, формировавшую ошибку.
Почему важно символьное имя
| Результат | Другая граница |
|---|---|
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, поколение объекта или защищённую идентичность.
Технические ссылки
- Лицензии и локальное хранилище лицензий — правила API и состояния, относящиеся к границе
NS_E_DRM_GET_LICENSESTRING_ERROR. - Перечисление лицензий в локальном хранилище — документация платформы, используемая для отличия
NS_E_DRM_GET_LICENSESTRING_ERRORот соседних результатов. - Интерфейсы клиента DRM — официальный контекст Windows Media DRM для
NS_E_DRM_GET_LICENSESTRING_ERROR. - Коды ошибок Windows Media DRM — правила API и состояния, относящиеся к границе
NS_E_DRM_GET_LICENSESTRING_ERROR.
Нужно найти другой код? Найти другой код состояния или ошибки.
