| Предыдущий | Следующий |
| NS_E_DRM_INVALID_MACHINE | NS_E_DRM_INVALID_LICENSE_REQUEST |
NS_E_DRM_ENUM_LICENSE_FAILED
Где остановилась операция
0xC00D271B соответствует NS_E_DRM_ENUM_LICENSE_FAILED. Рассматривайте его как результат уровня локального хранилища лицензий, защищённого хранилища и привязки к компьютеру: Сбой перечисления лицензий. Сохранение границы «сбой перечисления лицензий» для NS_E_DRM_ENUM_LICENSE_FAILED не позволяет более позднему сообщению воспроизведения скрыть исходный результат DRM.
Для NS_E_DRM_ENUM_LICENSE_FAILED, встроенное сообщение описывает видимый пользователю результат, а символьное имя сохраняет точную границу WMDRM для диагностики. Для подтверждения этого кода зафиксируйте создание дескриптора перечисления, последнюю успешно возвращённую лицензию и первую повреждённую или недоступную запись.
Состояние, которое следует сохранить до повтора
Зафиксируйте первое появление NS_E_DRM_ENUM_LICENSE_FAILED до того, как автоматический повтор, завершение Player, восстановление хранилища или повторное получение лицензии изменит состояние. Минимальная полезная запись содержит:
- Подтверждение для этого кода для состояния «сбой перечисления лицензий»: зафиксируйте создание дескриптора перечисления, последнюю успешно возвращённую лицензию и первую повреждённую или недоступную запись
- Защищённая идентичность для состояния «сбой перечисления лицензий»: первый сбойный вызов API хранилища: открытие, перечисление, сохранение, закрытие или запрос, в процессе обработки состояния «сбой перечисления лицензий».
- Состояние операции для состояния «сбой перечисления лицензий»: идентификатор лицензии и идентификатор ключа содержимого KID, при диагностике состояния «сбой перечисления лицензий».
- Хранилище или транспорт для состояния «сбой перечисления лицензий»: путь хранилища, поколение файла, результат доступа и базовую системную ошибку, при диагностике состояния «сбой перечисления лицензий».
- Контекст безопасности для состояния «сбой перечисления лицензий»: аппаратную идентичность и последнее изменение оборудования или операционной системы, на границе состояния «сбой перечисления лицензий».
- Точка корреляции для состояния «сбой перечисления лицензий»: последовательность сохранения контрольной точки, защищённого хранилища и данных реестра, при диагностике состояния «сбой перечисления лицензий».
При расследовании «сбой перечисления лицензий» по возможности используйте KID, идентификаторы лицензий, хэши, отпечатки сертификатов, размеры и временные метки. Во время диагностики NS_E_DRM_ENUM_LICENSE_FAILED, не помещайте в обычные журналы ключи содержимого, полные данные лицензий, пароли, cookie или расшифрованные медиаданные.
Место в рабочем процессе DRM
Контекст NS_E_DRM_ENUM_LICENSE_FAILED важен: лицензия после получения хранится в защищённом локальном хранилище, поэтому сбой хранилища отличается от отказа сервера выдать лицензию. Привязанное к компьютеру состояние нельзя диагностировать копированием файлов или удалением оригинала до сохранения доказательств, применительно к состоянию «сбой перечисления лицензий».
Полезный порядок расследования
- Начните с
0xC00D271Bи сопоставьте его с первым объектом WMDRM, который вернул этот результат, при диагностике данного состояния. - Для
NS_E_DRM_ENUM_LICENSE_FAILED, разделите данные заголовка и содержимого, сведения о лицензии, состоянии компьютера или устройства и данные службы или сети вокруг условия «сбой перечисления лицензий». - Перед повтором
NS_E_DRM_ENUM_LICENSE_FAILEDпроверьте, не была ли активна другая операция «сбой перечисления лицензий» и не мог ли предыдущий результат частично зафиксироваться. - Для
NS_E_DRM_ENUM_LICENSE_FAILED, зафиксируйте данные прямой проверки, относящиеся к этому HRESULT. - Примените минимальное поддерживаемое исправление: исправьте состояние или входные данные на уровне, сформировавшем ошибку, и повторите операцию с новым объектом; не сбрасывайте не связанное с ошибкой защищённое состояние, применительно к состоянию «сбой перечисления лицензий».
Узко направленное исправление
Поддерживаемое исправление для NS_E_DRM_ENUM_LICENSE_FAILED имеет узкое исправление: исправьте конкретную запись или границу хранилища и начните перечисление с нового объекта. После устранения NS_E_DRM_ENUM_LICENSE_FAILEDповторно откройте или создайте объект, которому принадлежало условие «сбой перечисления лицензий», чтобы кэшированное состояние сбойного экземпляра не было принято за результат исправления.
Показательный случай: Несколько лицензий перечисляются успешно, после чего операция завершается ошибкой на одной записи хранилища.
Чего не следует делать сначала для состояния «сбой перечисления лицензий»
- Не удаляйте и не сбрасывайте состояние DRM до сохранения хэшей, временных меток и первой ошибки хранилища, с учётом состояния «сбой перечисления лицензий». Это изменит доказательства и не покажет, почему
NS_E_DRM_ENUM_LICENSE_FAILED. - Не копируйте защищённое хранилище лицензий с другого компьютера как способ исправления, применительно к состоянию «сбой перечисления лицензий». Для
NS_E_DRM_ENUM_LICENSE_FAILED, такой подход может создать дополнительную проблему хранилища, идентификации или политики. - Не сводите
NS_E_DRM_ENUM_LICENSE_FAILEDдо фразы «сбой DRM» в телеметрии; сохраняйте HRESULT, символьное имя, операцию и идентификатор объекта.
Соседние результаты с другим смыслом
| Результат | Другая граница |
|---|---|
NS_E_DRM_INVALID_MACHINE | Недопустимое состояние компьютера для DRM, при диагностике состояния «сбой перечисления лицензий». |
NS_E_DRM_SECURE_STORE_UNLOCK_ERROR | Не удалось разблокировать защищённое хранилище DRM, при диагностике состояния «сбой перечисления лицензий». |
NS_E_DRM_LICENSE_STORE_SAVE_ERROR | Не удалось сохранить хранилище лицензий, на границе состояния «сбой перечисления лицензий». |
Одно условие «сбой перечисления лицензий» может сопровождаться несколькими значениями. Упорядочьте цепочку событий NS_E_DRM_ENUM_LICENSE_FAILED по времени и отдавайте предпочтение первому коду, созданному на самой низкой конкретной границе, а не более позднему сообщению проигрывателя.
Проверка после исправления
Корректный регрессионный тест для NS_E_DRM_ENUM_LICENSE_FAILED содержит два сценария: один намеренно вызывает попытку защищённого действия до проверки разрешения лицензии, второй применяет целевое исправление. Для NS_E_DRM_ENUM_LICENSE_FAILEDсравните порядок обратных вызовов, выбранную лицензию и KID, итоговое решение о правах и сохранённое состояние; исчезновение одного диалогового окна не доказывает исправление.
Практическое примечание для этого кода
Символьная фраза «сбой перечисления лицензий» является важным ключом поиска и телеметрии для NS_E_DRM_ENUM_LICENSE_FAILED. Храните её рядом с точным значением 0xC00D271B; официальное сообщение о невозможности выполнить действие полезно пользователю, но само по себе не определяет API-источник, поколение объекта или защищённую идентичность.
Технические ссылки
- Лицензии и локальное хранилище лицензий — официальный контекст Windows Media DRM для
NS_E_DRM_ENUM_LICENSE_FAILED. - Перечисление лицензий в локальном хранилище — правила API и состояния, относящиеся к границе
NS_E_DRM_ENUM_LICENSE_FAILED. - Интерфейсы клиента DRM — документация платформы, используемая для отличия
NS_E_DRM_ENUM_LICENSE_FAILEDот соседних результатов. - Коды ошибок Windows Media DRM — официальный контекст Windows Media DRM для
NS_E_DRM_ENUM_LICENSE_FAILED.
Нужно найти другой код? Найти другой код состояния или ошибки.
