| Предыдущий | Следующий |
| NS_E_DRM_ALREADY_INDIVIDUALIZED | NS_E_DRM_ACQUIRING_LICENSE |
NS_E_DRM_ACTION_NOT_QUERIED
Что именно изолирует этот HRESULT
Символьный результат NS_E_DRM_ACTION_NOT_QUERIED сужает значение 0xC00D272A сужает причину до проверки действительности лицензии, прав и применения политики. На практике приложение пытается выполнить защищённое действие, не проверив предварительно, разрешает ли его лицензия; ошибка возникает на этапе оценки, который сопоставляет лицензию с защищённым содержимым и решает, разрешено ли действие с учётом сроков, счётчиков, уровня безопасности приложения, регистрации устройства и ограничений вывода.
Для NS_E_DRM_ACTION_NOT_QUERIED, встроенное сообщение описывает видимый пользователю результат, а символьная фраза «action not queried» точно обозначает границу WMDRM. Для доказательства причины зафиксируйте последовательность проверки действия и результат API, который должен был предшествовать выполнению.
Какой компонент владеет сбоем
Не сводите NS_E_DRM_ACTION_NOT_QUERIED к общей ошибке DRM. Наличие лицензии не означает, что разрешена любая операция: права и ограничения оцениваются для конкретного действия. Кроме того, одно содержимое может иметь несколько лицензий, поэтому диагностика должна определить лицензию, фактически выбранную компонентом DRM.
Диагностические данные, разделяющие причины
Зафиксируйте первое появление NS_E_DRM_ACTION_NOT_QUERIED до того, как автоматическая повторная попытка, завершение Player, восстановление хранилища или повторное получение лицензии изменят состояние. Минимальный полезный набор данных включает:
- Доказательство конкретного кода: последовательность проверки действия и результат API, который должен был предшествовать выполнению.
- Защищённая идентичность: запрошенное действие: воспроизведение, копирование, запись на диск или перенос.
- Состояние операции: идентификатор лицензии, KID и идентичность заголовка содержимого.
- Сохранение состояния или транспорт: время начала действия, срок истечения и показания защищённых часов.
- Контекст безопасности: уровень безопасности приложения и требуемая защита выхода.
- Точка корреляции: оставшиеся счётчики, состояние регистрации устройства и отзыва.
При расследовании условия «action not queried» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. При диагностике NS_E_DRM_ACTION_NOT_QUERIED не помещайте ключи содержимого, полные данные лицензий, пароли, файлы cookie или расшифрованные медиаданные в обычные журналы.
Как доказать условие
- Начните с
0xC00D272Aи сопоставьте его с первым объектом WMDRM, который его вернул. - Для
NS_E_DRM_ACTION_NOT_QUERIED, разделите данные заголовка и содержимого, сведения о лицензии, состоянии компьютера или устройства и данные службы или сети вокруг условия «action not queried». - Перед повторной попыткой для
NS_E_DRM_ACTION_NOT_QUERIEDпроверьте, не выполнялась ли другая операция с тем же защищённым состоянием и не могла ли предыдущая попытка частично зафиксировать результат. - Для
NS_E_DRM_ACTION_NOT_QUERIEDзафиксируйте последовательность проверки действия и результат API, который должен был предшествовать выполнению. - Примените минимальное поддерживаемое исправление: запросите разрешение действия и ограничения до запуска защищённой операции; не сбрасывайте несвязанное защищённое состояние.
Что должно изменить поддерживаемое исправление
Поддерживаемое исправление для NS_E_DRM_ACTION_NOT_QUERIED узкое: запросить действие и ограничения до запуска защищённой операции. После устранения NS_E_DRM_ACTION_NOT_QUERIED повторно откройте или создайте объект, которому принадлежало условие «action not queried», чтобы кэшированное состояние сбойного экземпляра не было принято за результат исправления.
Характерный случай: пользовательский проигрыватель начинает воспроизведение, не завершив предварительную проверку прав.
Распространённые, но небезопасные действия
- Не считайте каждый отказ политики повреждением файла или отсутствием кодека. Это меняет диагностические данные, не объясняя причину
NS_E_DRM_ACTION_NOT_QUERIED. - Не изменяйте системное время и не обходите защиту выхода, чтобы лицензия с ограничением по времени или безопасности выглядела действительной. Для
NS_E_DRM_ACTION_NOT_QUERIEDтакой обход может создать вторую проблему с хранилищем, идентичностью или политикой. - Не сводите
NS_E_DRM_ACTION_NOT_QUERIEDк записи «DRM failed» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентичность объекта.
Не объединяйте эти HRESULT
| Результат | Другая граница |
|---|---|
NS_E_DRM_NO_RIGHTS | Выбранная лицензия не предоставляет действие, запрошенное вызывающей стороной. |
NS_E_DRM_LICENSE_UNUSABLE | Лицензия недействительна; обратитесь за помощью к поставщику содержимого. |
NS_E_DRM_CACHED_CONTENT_ERROR | Windows Media DRM не может воспроизвести защищённый файл, поскольку отсутствуют необходимые права. |
Одному происшествию с условием «action not queried» могут сопутствовать несколько значений. Упорядочьте NS_E_DRM_ACTION_NOT_QUERIED по времени и отдайте приоритет первому коду, полученному на самой низкой конкретной границе, а не более позднему сводному сообщению Player.
Как убедиться, что исправление действительно
Корректный регрессионный тест для NS_E_DRM_ACTION_NOT_QUERIED содержит два сценария: один намеренно вызывает попытку защищённого действия до проверки разрешения лицензии, второй применяет целевое исправление. Для NS_E_DRM_ACTION_NOT_QUERIED сравните порядок обратных вызовов, выбранную лицензию и KID, итоговое решение о правах и сохранённое состояние; исчезновение одного диалогового окна не доказывает исправление.
Практическое примечание для этого кода
Символьная фраза «action not queried» — важный ключ поиска и телеметрии для NS_E_DRM_ACTION_NOT_QUERIED. Храните её рядом с точным значением 0xC00D272A; официальное сообщение о невозможности выполнить действие полезно пользователю, но само по себе не определяет API-источник, поколение объекта или защищённую идентичность.
Технические ссылки
- Основы DRM и применение прав — официальный контекст Windows Media DRM для
NS_E_DRM_ACTION_NOT_QUERIED. - Лицензии и локальное хранилище лицензий — правила API и состояния, относящиеся к границе
NS_E_DRM_ACTION_NOT_QUERIED. - Уровни защиты выхода — документация платформы, помогающая отличить
NS_E_DRM_ACTION_NOT_QUERIEDот соседних результатов. - Защита DRM и распространение лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_ACTION_NOT_QUERIED.
Нужно найти другой код? Найти другой код состояния или ошибки.