Что означает код HRESULT 0xC00D2720 (NS_E_DRM_NO_RIGHTS)?

 
Предыдущий Следующий
NS_E_DRM_INVALID_LICENSE_ACQUIRED NS_E_DRM_KEY_ERROR

NS_E_DRM_NO_RIGHTS

Точное условие DRM

NS_E_DRM_NO_RIGHTS — это HRESULT Windows Media DRM 0xC00D2720. Он означает, что выбранная лицензия не предоставляет действие, запрошенное вызывающей стороной. Полезная область диагностики — этап оценки, который сопоставляет лицензию с защищённым содержимым и решает, разрешено ли запрошенное действие с учётом дат, счётчиков, уровня безопасности приложения, регистрации устройства и ограничений вывода; это не общее утверждение о сбое проигрывателя, сети или файловой системы для результата «нет прав».

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

Состояние протокола и хранилища

Наличие лицензии не означает, что разрешена любая операция: права и ограничения оцениваются для конкретного запрошенного действия в процессе обработки состояния «нет прав». Для NS_E_DRM_NO_RIGHTS, одно и то же содержимое может иметь несколько лицензий, поэтому диагностика должна определить лицензию, фактически выбранную компонентом DRM, в пути «нет прав».

Данные, которые следует сохранить

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

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

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

Связанные коды и диагностическое различие

РезультатДругая граница
NS_E_DRM_ACTION_NOT_QUERIEDПриложение пытается выполнить защищённое действие до проверки того, разрешает ли его лицензия, при диагностике состояния «нет прав».
NS_E_DRM_LICENSE_UNUSABLEЛицензия недействительна на границе состояния «нет прав»; обратитесь к поставщику содержимого за дополнительной помощью при диагностике этого состояния.
NS_E_DRM_CACHED_CONTENT_ERRORWindows Media Digital Rights Management (DRM) не может воспроизвести защищённый файл, поскольку отсутствуют необходимые права, в инциденте «нет прав».

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

Последовательность диагностики

  1. Сохраните NS_E_DRM_NO_RIGHTS, вызывающий интерфейс и первый статус нижнего уровня до его замены оболочкой, при воспроизведении состояния «нет прав».
  2. Сопоставьте NS_E_DRM_NO_RIGHTS с одним KID или идентификатором лицензии, хэшем содержимого, сертификатом устройства либо идентификатором операции миграции.
  3. Для NS_E_DRM_NO_RIGHTS, восстановите переход состояния непосредственно перед «нет прав», а не начинайте с последнего диалогового окна Player.
  4. Подтвердите границу, убедившись, что можете зафиксировать точное действие и выбранную лицензию, а не только название содержимого, в процессе «нет прав».
  5. После получения лицензии, разрешающей это действие, или выбора разрешённой операции проверьте и запрошенное право, и конечное состояние хранилища/устройства в пути «нет прав».

Исправление формирующего условия

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

Показательный случай: Воспроизведение разрешено, но эта же лицензия не позволяет запись на диск или передачу, на границе состояния «нет прав».

Действия, которые не доказывают исправление

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

Регрессионная проверка

Повторите операцию, первоначально вернувшую NS_E_DRM_NO_RIGHTS. Для NS_E_DRM_NO_RIGHTS, проверьте точный HRESULT в ответственном API на сбойном примере «нет прав»; затем измените только решающее предварительное условие и убедитесь, что исправленный запуск завершается без соседнего результата DRM. После исправления NS_E_DRM_NO_RIGHTS, проверьте запрошенное действие и конечное состояние хранилища лицензий, защищённых часов, устройства или миграции, относящееся к «нет прав».

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

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

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


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