Что означает код HRESULT 0xC00D284D (NS_E_DRM_UNSUPPORTED_ALGORITHM)?

 
Предыдущий Следующий
NS_E_DRM_CHAIN_TOO_LONG NS_E_DRM_LICENSE_DELETION_ERROR

NS_E_DRM_UNSUPPORTED_ALGORITHM

Точная граница DRM

Этот HRESULT указывает на конкретное условие: NS_E_DRM_UNSUPPORTED_ALGORITHM возникает, потому что защищённый объект указывает криптографический алгоритм, который клиент не реализует. NS_E_DRM_UNSUPPORTED_ALGORITHM поступает из внутренних компонентов клиента Windows Media DRM, автомат состояний которых инициализирует компоненты безопасности, проверяет содержимое и идентификаторы лицензий, выполняет индивидуализацию, управляет цепочками лицензий и координирует защищённое воспроизведение.

Используйте саму сбойную операцию, чтобы зафиксировать идентификатор алгоритма из заголовка или лицензии и версию клиента. Стандартный текст AllStat уже приведён выше; этот специальный раздел сосредоточен на состоянии объекта и доказательствах, необходимых для различения NS_E_DRM_UNSUPPORTED_ALGORITHM от соседних ошибок Windows Media.

Что следует записать в журнал

Граф объектов за NS_E_DRM_UNSUPPORTED_ALGORITHM включает версию компонента DRM, KID, подпись заголовка содержимого, цепочку лицензий, вышестоящую лицензию, состояние индивидуализации, регистрации переносных устройств и локальную конфигурацию. Трасса NS_E_DRM_UNSUPPORTED_ALGORITHM должна сохранять KID и хеш заголовка, версию компонента DRM, состояние индивидуализации, идентификаторы цепочки лицензий, результат поиска в реестре или конфигурации и первый обратный вызов клиента, сообщивший об ошибке.

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

Ожидаемое изменение состояния

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

Поля воспроизводимого отчёта

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

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

РезультатПочему он указывает на другую причину
NS_E_DRM_LICENSE_INITIALIZATION_ERRORмеханизм DRM не смог инициализировать объект лицензии или подсистему лицензирования для этой операции
NS_E_DRM_CHAIN_TOO_LONGпредлагаемая связанная лицензия использует другую связанную лицензию как вышестоящую, превышая поддерживаемую глубину цепочки
NS_E_DRM_LICENSE_DELETION_ERRORсреда DRM завершилась ошибкой при удалении лицензии из управляемого хранилища

Область действия и последствия

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

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

Порядок диагностики

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

Измените отклонённое предусловие

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

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

Критерий закрытия

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

Технические ссылки для NS_E_DRM_UNSUPPORTED_ALGORITHM


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