| Предыдущий | Следующий |
| NS_E_DRM_LICENSE_CLOSE_ERROR | NS_E_DRM_QUERY_ERROR |
NS_E_DRM_GET_LICENSE_ERROR
Где остановилась операция
0xC00D2739 соответствует NS_E_DRM_GET_LICENSE_ERROR. Рассматривайте его как результат уровня локального хранилища лицензий, защищённого хранилища и привязки к компьютеру: Не удалось получить лицензию из локального хранилища. Сохранение границы «не удалось получить лицензию из локального хранилища» для NS_E_DRM_GET_LICENSE_ERROR не позволяет более позднему сообщению воспроизведения скрыть исходный результат DRM.
Для NS_E_DRM_GET_LICENSE_ERROR, встроенное сообщение описывает видимый пользователю результат, а символьное имя сохраняет точную границу WMDRM для диагностики. Для подтверждения этого кода зафиксируйте идентификатор лицензии, KID, позицию перечисления и результат обращения к хранилищу.
Состояние, которое следует сохранить до повтора
Зафиксируйте первое появление NS_E_DRM_GET_LICENSE_ERROR до того, как автоматический повтор, завершение Player, восстановление хранилища или повторное получение лицензии изменит состояние. Минимальная полезная запись содержит:
- Подтверждение для этого кода для состояния «не удалось получить лицензию из локального хранилища»: зафиксируйте идентификатор лицензии, KID, позицию перечисления и результат обращения к хранилищу
- Защищённая идентичность для состояния «не удалось получить лицензию из локального хранилища»: аппаратную идентичность и последнее изменение оборудования или операционной системы, в процессе обработки состояния «не удалось получить лицензию из локального хранилища».
- Состояние операции для состояния «не удалось получить лицензию из локального хранилища»: последовательность сохранения контрольной точки, защищённого хранилища и данных реестра, при диагностике состояния «не удалось получить лицензию из локального хранилища».
- Хранилище или транспорт для состояния «не удалось получить лицензию из локального хранилища»: первый сбойный вызов API хранилища: открытие, перечисление, сохранение, закрытие или запрос, при диагностике состояния «не удалось получить лицензию из локального хранилища».
- Контекст безопасности для состояния «не удалось получить лицензию из локального хранилища»: идентификатор лицензии и идентификатор ключа содержимого KID, на границе состояния «не удалось получить лицензию из локального хранилища».
- Точка корреляции для состояния «не удалось получить лицензию из локального хранилища»: путь хранилища, поколение файла, результат доступа и базовую системную ошибку, при диагностике состояния «не удалось получить лицензию из локального хранилища».
При расследовании «не удалось получить лицензию из локального хранилища» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. Во время диагностики NS_E_DRM_GET_LICENSE_ERROR, не помещайте в обычные журналы ключи содержимого, полные данные лицензий, пароли, cookie или расшифрованные медиаданные.
Место в рабочем процессе DRM
Контекст NS_E_DRM_GET_LICENSE_ERROR важен: лицензия после получения хранится в защищённом локальном хранилище, поэтому сбой хранилища отличается от отказа сервера выдать лицензию. Привязанное к компьютеру состояние нельзя диагностировать копированием файлов или удалением оригинала до сохранения доказательств, применительно к состоянию «не удалось получить лицензию из локального хранилища».
Полезный порядок расследования
- Начните с
0xC00D2739и сопоставьте его с первым объектом WMDRM, который вернул этот результат, при диагностике данного состояния. - Для
NS_E_DRM_GET_LICENSE_ERROR, разделите данные заголовка и содержимого, сведения о лицензии, состоянии компьютера или устройства и данные службы или сети вокруг условия «не удалось получить лицензию из локального хранилища». - Перед повтором
NS_E_DRM_GET_LICENSE_ERRORпроверьте, не была ли активна другая операция «не удалось получить лицензию из локального хранилища» и не мог ли предыдущий результат частично зафиксироваться. - Для
NS_E_DRM_GET_LICENSE_ERROR, зафиксируйте данные прямой проверки, относящиеся к этому HRESULT. - Примените минимальное поддерживаемое исправление: исправьте состояние или входные данные на уровне, сформировавшем ошибку, и повторите операцию с новым объектом; не сбрасывайте не связанное с ошибкой защищённое состояние, применительно к состоянию «не удалось получить лицензию из локального хранилища».
Узко направленное исправление
Поддерживаемое исправление для NS_E_DRM_GET_LICENSE_ERROR имеет узкое исправление: исправьте или повторно получите конкретную запись, не сбрасывая остальные лицензии. После устранения NS_E_DRM_GET_LICENSE_ERRORповторно откройте или создайте объект, которому принадлежало условие «не удалось получить лицензию из локального хранилища», чтобы кэшированное состояние сбойного экземпляра не было принято за результат исправления.
Показательный случай: KID содержимого сопоставляется с записью хранилища, которую невозможно вернуть вызывающей стороне.
Чего не следует делать сначала для состояния «не удалось получить лицензию из локального хранилища»
- Не удаляйте и не сбрасывайте состояние DRM до сохранения хэшей, временных меток и первой ошибки хранилища, с учётом состояния «не удалось получить лицензию из локального хранилища». Это изменит доказательства и не покажет, почему
NS_E_DRM_GET_LICENSE_ERROR. - Не копируйте защищённое хранилище лицензий с другого компьютера как способ исправления, применительно к состоянию «не удалось получить лицензию из локального хранилища». Для
NS_E_DRM_GET_LICENSE_ERROR, такой подход может создать дополнительную проблему хранилища, идентификации или политики. - Не сводите
NS_E_DRM_GET_LICENSE_ERRORдо фразы «сбой DRM» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентификатор объекта.
Соседние результаты с другим смыслом
| Результат | Другая граница |
|---|---|
NS_E_DRM_LICENSE_CLOSE_ERROR | Не удалось закрыть объект лицензии, при диагностике состояния «не удалось получить лицензию из локального хранилища». |
NS_E_DRM_LICENSE_OPEN_ERROR | Не удалось открыть объект лицензии, при диагностике состояния «не удалось получить лицензию из локального хранилища». |
NS_E_DRM_GET_LICENSESTRING_ERROR | Не удалось получить сериализованную строку лицензии, на границе состояния «не удалось получить лицензию из локального хранилища». |
Одно условие «не удалось получить лицензию из локального хранилища» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_GET_LICENSE_ERROR по времени и отдавайте предпочтение первому коду, созданному на самой низкой конкретной границе, а не более позднему сообщению проигрывателя.
Проверка после исправления
Корректный регрессионный тест для NS_E_DRM_GET_LICENSE_ERROR содержит два сценария: один намеренно вызывает попытку защищённого действия до проверки разрешения лицензии, второй применяет целевое исправление. Для NS_E_DRM_GET_LICENSE_ERRORсравните порядок обратных вызовов, выбранную лицензию и KID, итоговое решение о правах и сохранённое состояние; исчезновение одного диалогового окна не доказывает исправление.
Практическое примечание для этого кода
Символьная фраза «не удалось получить лицензию из локального хранилища» является важным ключом поиска и телеметрии для NS_E_DRM_GET_LICENSE_ERROR. Храните её рядом с точным значением 0xC00D2739; официальное сообщение о невозможности выполнить действие полезно пользователю, но само по себе не определяет API-источник, поколение объекта или защищённую идентичность.
Технические ссылки
- Лицензии и локальное хранилище лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_GET_LICENSE_ERROR. - Перечисление лицензий в локальном хранилище — правила API и состояния, относящиеся к границе
NS_E_DRM_GET_LICENSE_ERROR. - Интерфейсы клиента DRM — документация платформы, используемая для отличия
NS_E_DRM_GET_LICENSE_ERRORот соседних результатов. - Коды ошибок Windows Media DRM — официальный контекст Windows Media DRM для
NS_E_DRM_GET_LICENSE_ERROR.
Нужно найти другой код? Найти другой код состояния или ошибки.