Что означает код HRESULT 0xC00D1206 (NS_E_WMP_DRM_LICENSE_UNUSABLE)?

 
Предыдущий Следующий
NS_E_WMP_DRM_LICENSE_NOTENABLED NS_E_WMP_DRM_LICENSE_CONTENT_REVOKED

NS_E_WMP_DRM_LICENSE_UNUSABLE

Начните с объекта, сформировавшего ошибку

Практический смысл NS_E_WMP_DRM_LICENSE_UNUSABLE имеет узкий смысл: найденная лицензия существует, но не может быть применена к этому содержимому или действию. В подсистеме обработки прав Windows Media Player Этот результат возникает при обработке уровня проигрывателя, который открывает защищённое медиа, запрашивает локальное состояние лицензии, выполняет тихое или интерактивное получение прав, проверяет компоненты DRM и применяет ограничения на воспроизведение, запись или синхронизацию.

До изменения системы сопоставьте KID, привязку к компьютеру, права, требования безопасности и состояние отзыва. Стандартное описание AllStat уже приведено выше; здесь рассматриваются состояние объекта и данные, необходимые, чтобы отличить NS_E_WMP_DRM_LICENSE_UNUSABLE от соседних ошибок Windows Media.

Практический путь диагностики

  1. Сохраните этот HRESULT и 0xC00D1206 до очистки, перехода к резервному пути или смены контекста другим медиаэлементом.
  2. Примените узкое исправление для этого результата: замените непригодную лицензию на выданную для данного содержимого и среды.
  3. Свяжите этот результат с его текущим объектом обработки прав Windows Media Player и запрошенным действием.
  4. Выполните прямую проверку для этого результата: сопоставьте KID, привязку к компьютеру, права, требования безопасности и состояние отзыва.
  5. Сравните сбой с заведомо исправным случаем, изменив только пригодность найденной лицензии для данного содержимого и действия.
  6. Повторите то же действие с тем же содержимым и идентификатором устройства и убедитесь, что NS_E_WMP_DRM_LICENSE_UNUSABLE не заменена другой ошибкой политики или доверия.

Значимое состояние времени выполнения

Полный набор данных по инциденту связывает KID и заголовок содержимого, запись хранилища лицензий, запрошенное действие, URL получения лицензии, контекст пользователя и хранилища, защищённые часы и версию компонентов DRM. Минимально сопоставьте KID содержимого, запрошенное действие, результат запроса состояния лицензии, последовательность callback при получении, категорию ответа сервера и первый нижележащий HRESULT DRM.

Эти данные важны потому, что отклонённое условие конкретно состоит в наличии лицензии, которую нельзя применить к данному содержимому или действию.

Сравнение с одной переменной

NS_E_WMP_DRM_LICENSE_UNUSABLE следует рассматривать как невыполненное предварительное условие, а не произвольную медиаошибку. Подтвердите его сравнением KID, привязки к компьютеру, прав, требований безопасности и состояния отзыва; устраните причину заменой непригодной лицензии на выданную для данного содержимого и среды. При повторной проверке сохраняйте идентичность содержимого и устройства, чтобы успех нельзя было объяснить проверкой другого объекта.

Требования к трассировке

ПолеЗначение для этого результата
Временное состояниедоверенное или системное время, интервал действия, последовательность запросов и номер повторной попытки, если они влияют на результат
Результат нижнего уровнясамый ранний статус хранилища, сети, криптографического компонента, драйвера или поставщика перед итоговым HRESULT
Владелецоперация, API или обратный вызов, идентификатор объекта или сеанса и версия компонента или устройства, связанные с этим результатом
Прямая проверкасопоставьте KID, привязку к компьютеру, права, требования безопасности и состояние отзыва
Входные данные политикизапрошенное действие и точное свойство лицензии, сертификата, профиля, выхода или регистрации, проверяемое при получении этого результата

Что означал бы другой код

РезультатПочему он указывает на другую причину
NS_E_WMP_DRM_LICENSE_NOTACQUIREDпроигрыватель завершил или прекратил получение прав, не установив пригодную подходящую лицензию
NS_E_WMP_DRM_LICENSE_NOTENABLEDлицензия существует, но условие начала её действия ещё не выполнено
NS_E_WMP_DRM_LICENSE_CONTENT_REVOKEDиздатель отозвал разрешение для защищённого содержимого или лицензии

Не диагностируйте неправильный слой

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

Если Player, кодировщик, программа установки или уровень устройства позднее выдаёт более общую ошибку, сохраните этот HRESULT как первый конкретный результат. Объект и операция, связанные с этим результатом, обычно диагностически ценнее более позднего результата очистки или сводного сообщения интерфейса.

Как выглядит успешное завершение

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

  • Данные для этого результата легко потерять; не сбрасывайте локальное хранилище DRM до сохранения KID содержимого и результата состояния лицензии: сброс может превратить точный сбой прав или подписи в общее отсутствие лицензии.
  • Не изменяйте доверенное время, контроль отзыва, проверку сертификатов или политику выхода только ради подавления этого результата; это обходит решение, а не исправляет его входные данные.
  • Сохраните один сбойный и один исправленный артефакт, чтобы устранение этого результата можно было проверять при регрессионном тестировании.

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

В итоговом тесте по возможности оставьте неизменными KID содержимого или хэш файла, запрошенное действие, пользователя или учётную запись, идентификатор устройства и маршрут выхода. Этот случай разрешён только тогда, когда операция завершается без этого HRESULT и без замещающей ошибки соседней проверки лицензии, доверия, сеанса или политики.

Технические ссылки для этого результата


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