| Предыдущий | Следующий |
| NS_E_DRM_UNABLE_TO_CREATE_KEYS_OBJECT | NS_E_DRM_UNABLE_TO_CREATE_CODING_OBJECT |
NS_E_DRM_LICENSE_NOTACQUIRED
Что именно изолирует этот HRESULT
Когда клиент возвращает NS_E_DRM_LICENSE_NOTACQUIRED (0xC00D2759), решающим условием является то, что не удалось получить лицензию. Этот результат относится к формированию запроса, получению лицензии и обработке ответа сервера — в частности, к асинхронному пути, который строит запрос из заголовка защищённого содержимого, отправляет или предоставляет запрос, получает ответ и сохраняет принятые лицензии в локальном хранилище, при воспроизведении состояния «лицензия не получена».
Для NS_E_DRM_LICENSE_NOTACQUIRED, встроенное сообщение описывает видимый пользователю результат, а символьная фраза «лицензия не получена» сохраняет точную границу WMDRM для диагностики. Для подтверждения кода запишите точный API, состояние объекта, идентификатор входных данных и первый низкоуровневый результат, применительно к состоянию «лицензия не получена».
Минимальная запись об инциденте
Зафиксируйте первое появление NS_E_DRM_LICENSE_NOTACQUIRED до того, как автоматический повтор, закрытие проигрывателя, восстановление хранилища или повторное получение лицензии изменит состояние, в процессе обработки состояния «лицензия не получена». Минимально полезная запись содержит:
- Подтверждение для этого кода: зафиксируйте точный API, состояние объекта, идентичность входных данных и первый низкоуровневый результат.
- Защищённая идентичность: тихий или интерактивный режим получения и последовательность обратных вызовов или событий, в пути обработки состояния «лицензия не получена».
- Состояние операции: идентификатор запроса или запроса-вызова и HTTP-статус ответа, при трассировке этой ошибки, при трассировке состояния «лицензия не получена».
- Хранилище или транспорт: сертификат сервера, подпись ответа и количество возвращённых лицензий на границе «лицензия не получена».
- Контекст безопасности: результат фиксации в хранилище после успешного ответа сервера при диагностике состояния «лицензия не получена».
- Точка корреляции: KID содержимого и URL получения лицензии из заголовка в инциденте «лицензия не получена».
При расследовании «лицензия не получена» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. Во время диагностики NS_E_DRM_LICENSE_NOTACQUIREDне помещайте ключи содержимого, полные данные лицензий, пароли, файлы cookie или расшифрованные медиаданные в обычные журналы, для результата «лицензия не получена».
Первичная диагностика без уничтожения данных
- Начните с
0xC00D2759и сопоставьте его с первым объектом WMDRM, который его вернул, при воспроизведении состояния «лицензия не получена». - Для
NS_E_DRM_LICENSE_NOTACQUIRED, разделите данные заголовка и содержимого, сведения о лицензии, состоянии компьютера или устройства и данные службы или сети вокруг условия «лицензия не получена». - Перед повторной попыткой для
NS_E_DRM_LICENSE_NOTACQUIREDпроверьте, не была ли активна другая операция «лицензия не получена» и не мог ли предыдущий результат частично зафиксироваться. - Для
NS_E_DRM_LICENSE_NOTACQUIREDзафиксируйте точный API, состояние объекта, идентичность входных данных и первый низкоуровневый результат. - Примените минимальное поддерживаемое исправление: исправьте состояние или входные данные на уровне, сформировавшем ошибку, и повторите операцию с новым объектом; не сбрасывайте не связанное с ошибкой защищённое состояние, применительно к состоянию «лицензия не получена».
Почему важен уровень, вернувший код
Для NS_E_DRM_LICENSE_NOTACQUIREDдействуют два правила платформы. Получение лицензии и её сохранение являются разными этапами: допустимый ответ сервера всё ещё может быть отклонён при проверке или локальном сохранении, в пути обработки состояния «лицензия не получена». Поскольку получение выполняется асинхронно, запуск второго запроса до события завершения может вызвать ошибку состояния, а не сетевой сбой, при трассировке состояния «лицензия не получена».
Восстановление на правильном уровне
Поддерживаемое исправление для NS_E_DRM_LICENSE_NOTACQUIRED имеет узкое исправление: исправьте состояние DRM или входные данные, вызвавшие ошибку, и повторите операцию с новым объектом, на границе состояния «лицензия не получена». После устранения NS_E_DRM_LICENSE_NOTACQUIREDповторно откройте или создайте объект, которому принадлежало условие «лицензия не получена», чтобы кэшированное состояние сбойного экземпляра не было принято за результат исправления.
Показательный случай: Приложение достигает пути «лицензия не получена» и получает этот HRESULT до завершения мультимедийной операции более высокого уровня.
Почему важно символьное имя
| Результат | Другая граница |
|---|---|
NS_E_DRM_ERROR_BAD_NET_RESP | Указанный сервер не может выполнить запрошенную операцию при диагностике состояния «лицензия не получена». |
NS_E_DRM_POLICY_DISABLE_ONLINE | Политика запрещает сетевые операции DRM, при диагностике состояния «лицензия не получена». |
NS_E_LICENSE_HEADER_MISSING_URL | В заголовке DRM-содержимого отсутствует URL получения лицензии, необходимый клиенту, для результата «лицензия не получена». |
Одно условие «лицензия не получена» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_LICENSE_NOTACQUIRED по времени и предпочитайте первый код, созданный на самой низкой конкретной границе, более позднему сводному результату Player при воспроизведении лицензия не получена.
Сокращения пути, ухудшающие диагностику для состояния «лицензия не получена»
- Не повторяйте вслепую изменяющий состояние запрос лицензии без сопоставления предыдущего challenge и события завершения в процессе «лицензия не получена». Это изменяет доказательства, не показывая, почему
NS_E_DRM_LICENSE_NOTACQUIRED. - Не записывайте в диагностический вывод полные запросы и ответы получения лицензии, cookie или учётные данные в пути «лицензия не получена». Для
NS_E_DRM_LICENSE_NOTACQUIREDтакой подход может создать вторую проблему хранилища, идентификатора или политики при трассировке лицензия не получена. - Не сводите
NS_E_DRM_LICENSE_NOTACQUIREDк «сбой DRM» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентификатор объекта для границы лицензия не получена.
Критерии завершения
Корректный регрессионный тест для NS_E_DRM_LICENSE_NOTACQUIRED имеет два тестовых сценария: один намеренно вызывает «не удалось получить лицензию», второй применяет целевое исправление при диагностике состояния «лицензия не получена». Для NS_E_DRM_LICENSE_NOTACQUIREDсравните порядок обратных вызовов, выбранную лицензию и KID, итоговое решение о правах и сохранённое состояние; исчезновение одного диалогового окна не доказывает исправление.
Практическое примечание для этого кода
Символьная фраза «лицензия не получена» является важным ключом поиска и телеметрии для NS_E_DRM_LICENSE_NOTACQUIRED. Храните её рядом с точным значением 0xC00D2759; официальное сообщение «Не удалось получить лицензию» полезно пользователю, но само по себе не определяет формирующий API, поколение объекта или защищённую идентичность при диагностике состояния «лицензия не получена».
Технические ссылки
- Получение лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_LICENSE_NOTACQUIRED. - Обработка событий получения лицензии — правила API и состояния, относящиеся к границе
NS_E_DRM_LICENSE_NOTACQUIRED. - Защита DRM и распространение лицензий — документация платформы, используемая для отличия
NS_E_DRM_LICENSE_NOTACQUIREDот соседних результатов. - Руководство по программированию клиента DRM — официальный контекст Windows Media DRM для
NS_E_DRM_LICENSE_NOTACQUIRED.
Нужно найти другой код? Найти другой код состояния или ошибки.