| Предыдущий | Следующий |
| NS_E_DRM_ACTION_NOT_QUERIED | NS_E_DRM_INDIVIDUALIZING |
NS_E_DRM_ACQUIRING_LICENSE
Как классифицировать этот результат
Когда клиент возвращает NS_E_DRM_ACQUIRING_LICENSE (0xC00D272B), решающим условием является то, что для объекта DRM уже выполняется другая операция получения лицензии. Этот результат относится к формированию запроса, получению лицензии и обработке ответа сервера — в частности, к асинхронному пути, который строит запрос из заголовка защищённого содержимого, отправляет или предоставляет запрос, получает ответ и сохраняет принятые лицензии в локальном хранилище.
Для NS_E_DRM_ACQUIRING_LICENSE, встроенное сообщение описывает видимый пользователю результат, а символьная фраза «acquiring license» сохраняет точную границу WMDRM для диагностики. Для подтверждения этого кода определите активную операцию, её обратный вызов завершения и cookie отмены.
Минимальная запись об инциденте
Зафиксируйте первое появление NS_E_DRM_ACQUIRING_LICENSE до того, как автоматический повтор, завершение Player, восстановление хранилища или повторное получение лицензии изменит состояние. Минимальная полезная запись содержит:
- Подтверждение для этого кода: активную операцию, её обратный вызов завершения и cookie отмены.
- Защищённая идентичность: тихий или интерактивный режим получения и последовательность обратных вызовов или событий.
- Состояние операции: идентификатор запроса или вызова и HTTP-статус ответа.
- Хранилище или транспорт: сертификат сервера, подпись ответа и число возвращённых лицензий.
- Контекст безопасности: результат сохранения в хранилище после успешного ответа сервера.
- Точка корреляции: KID содержимого и URL получения лицензии из заголовка.
При расследовании «acquiring license» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. Во время диагностики NS_E_DRM_ACQUIRING_LICENSE, не помещайте в обычные журналы ключи содержимого, полные блоки лицензий, пароли, cookie или расшифрованные мультимедиа.
Почему важен уровень, вернувший код
Для NS_E_DRM_ACQUIRING_LICENSE действуют два правила платформы. Получение лицензии и её сохранение являются разными этапами: допустимый ответ сервера всё ещё может быть отклонён при проверке или локальном сохранении. Поскольку получение выполняется асинхронно, запуск второго запроса до события завершения может вызвать ошибку состояния, а не сетевой сбой.
Первичная диагностика без уничтожения данных
- Найдите самый ранний возврат API, обратный вызов или событие, содержащее
NS_E_DRM_ACQUIRING_LICENSEи0xC00D272B. - Для
NS_E_DRM_ACQUIRING_LICENSE, определите точное поколение объекта содержимого, лицензии, хранилища, устройства или миграции, участвующее в «acquiring license». - Для
NS_E_DRM_ACQUIRING_LICENSE, определите, возникло ли «acquiring license» до сетевого обмена, при проверке ответа, во время применения политики или при фиксации защищённого состояния. - Выполните проверку для этого кода: определите активную операцию, её обратный вызов завершения и cookie отмены.
- Внесите одно узкое исправление: дождитесь завершения текущего получения либо явно отмените его до запуска следующего, затем повторите ту же операцию-источник.
Почему важно символьное имя
| Результат | Другая граница |
|---|---|
NS_E_DRM_INVALID_LICENSE_ACQUIRED | Ответ сервера получен, но возвращённая лицензия неприемлема для клиента. |
NS_E_DRM_UNABLE_TO_ACQUIRE_LICENSE | Процесс получения не создал пригодную лицензию. |
NS_E_DRM_INVALID_LICENSE_REQUEST | Сформированный или переданный запрос лицензии недействителен для защищённого содержимого. |
Одно условие «acquiring license» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_ACQUIRING_LICENSE по временным меткам и отдавайте приоритет первому коду, полученному на самой низкой конкретной границе, а не более позднему сводному результату уровня Player.
Сокращения пути, ухудшающие диагностику
- Не повторяйте бездумно изменяющий состояние запрос лицензии, не сопоставив предыдущий запрос и событие завершения. Это изменяет данные, не показывая, почему был получен
NS_E_DRM_ACQUIRING_LICENSE. - Не записывайте в диагностический вывод полные запросы и ответы лицензирования, cookie или учётные данные. Для
NS_E_DRM_ACQUIRING_LICENSE, такой подход может создать дополнительную проблему хранилища, идентификации или политики. - Не сводите
NS_E_DRM_ACQUIRING_LICENSEдо фразы «ошибка DRM» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентификатор объекта.
Восстановление на правильном уровне
Для NS_E_DRM_ACQUIRING_LICENSE, исправление состоит в ожидании завершения текущего получения или его явной отмене до запуска следующего. Сохраняйте исходное содержимое или заголовок, хранилище либо материалы миграции для NS_E_DRM_ACQUIRING_LICENSE до тех пор, пока операция «acquiring license» не завершится успешно и результат не сохранится после создания нового объекта приложения или обязательного перезапуска.
Показательный случай: Два пути интерфейса запускают получение лицензии для одного содержимого, пока первый запрос ещё выполняется.
Критерии завершения
После исправления пересоздайте объект WMDRM и выполните минимальный пример для NS_E_DRM_ACQUIRING_LICENSE. Убедитесь, что 0xC00D272B больше не возникает, требуемое лицензионное действие завершается, а вместо него не появляется предупреждение хранилища, сертификата, часов или миграции.
Практическое примечание для этого кода
Символьная фраза «acquiring license» является важным ключом поиска и телеметрии для NS_E_DRM_ACQUIRING_LICENSE. Храните её рядом с точным значением 0xC00D272B; официальное сообщение о невозможности начать новое получение лицензии до завершения текущего полезно пользователю, но само по себе не определяет ответственный API, поколение объекта или защищённую идентичность.
Технические ссылки
- Получение лицензий — правила API и состояния, относящиеся к границе
NS_E_DRM_ACQUIRING_LICENSE. - Обработка событий получения лицензии — документация платформы, используемая для отличия
NS_E_DRM_ACQUIRING_LICENSEот соседних результатов. - Защита DRM и распространение лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_ACQUIRING_LICENSE. - Руководство по программированию клиента DRM — правила API и состояния, относящиеся к границе
NS_E_DRM_ACQUIRING_LICENSE.
Нужно найти другой код? Найти другой код состояния или ошибки.