| Предыдущий | Следующий |
| 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_ERROR | Windows Media Digital Rights Management (DRM) не может воспроизвести защищённый файл, поскольку отсутствуют необходимые права, в инциденте «нет прав». |
Одно условие «нет прав» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_NO_RIGHTS по времени и отдайте приоритет первому коду, полученному на самой низкой конкретной границе, а не более позднему сводному сообщению Player, для результата «нет прав».
Последовательность диагностики
- Сохраните
NS_E_DRM_NO_RIGHTS, вызывающий интерфейс и первый статус нижнего уровня до его замены оболочкой, при воспроизведении состояния «нет прав». - Сопоставьте
NS_E_DRM_NO_RIGHTSс одним KID или идентификатором лицензии, хэшем содержимого, сертификатом устройства либо идентификатором операции миграции. - Для
NS_E_DRM_NO_RIGHTS, восстановите переход состояния непосредственно перед «нет прав», а не начинайте с последнего диалогового окна Player. - Подтвердите границу, убедившись, что можете зафиксировать точное действие и выбранную лицензию, а не только название содержимого, в процессе «нет прав».
- После получения лицензии, разрешающей это действие, или выбора разрешённой операции проверьте и запрошенное право, и конечное состояние хранилища/устройства в пути «нет прав».
Исправление формирующего условия
Устраняйте 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, поколение объекта или защищённую идентичность при диагностике состояния «нет прав».
Технические ссылки
- Основы DRM и применение прав — документация платформы, используемая для отличия
NS_E_DRM_NO_RIGHTSот соседних результатов. - Лицензии и локальное хранилище лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_NO_RIGHTS. - Уровни защиты выхода — правила API и состояния, относящиеся к границе
NS_E_DRM_NO_RIGHTS. - Защита DRM и распространение лицензий — документация платформы, используемая для отличия
NS_E_DRM_NO_RIGHTSот соседних результатов.
Нужно найти другой код? Найти другой код состояния или ошибки.