| Предыдущий | Следующий |
| NS_E_DRM_LICENSE_SERVER_INFO_MISSING | NS_E_DRM_PD_TOO_MANY_DEVICES |
NS_E_DRM_BUSY
Область сбоя
Для NS_E_DRM_BUSY, нарушенный контракт состоит в том, что другой процесс или операция удерживает блокировку подсистемы DRM. NS_E_DRM_BUSY поступает из внутренних компонентов клиента Windows Media DRM, автомат состояний которых инициализирует компоненты безопасности, проверяет содержимое и идентификаторы лицензий, выполняет индивидуализацию, управляет цепочками лицензий и координирует защищённое воспроизведение.
Чтобы доказать эту границу, а не делать вывод по диалоговому окну, определите активные клиенты DRM и операцию, владеющую точкой сериализации. Стандартный текст AllStat уже показан выше; этот раздел сосредоточен на состоянии объекта и данных, позволяющих отличить NS_E_DRM_BUSY от соседних ошибок Windows Media.
Какие данные следует сохранить
Граф объектов NS_E_DRM_BUSY включает версию компонента DRM, KID, подпись заголовка содержимого, цепочку лицензий, вышестоящую лицензию, состояние индивидуализации, регистрации переносных устройств и локальную конфигурацию. Трассировка должна сохранить KID и хэш заголовка, версию DRM, состояние индивидуализации, идентификаторы цепочки лицензий, результат чтения реестра или конфигурации и первый обратный вызов клиента со сбоем.
Более поздняя общая ошибка не должна заменять эти данные: исходное условие остаётся прежним — другой процесс или операция удерживает блокировку подсистемы DRM.
Переход, который нужно проверить повторно
Полезная модель сбоя для NS_E_DRM_BUSY связывает причину и восстановление: другой процесс или операция удерживает блокировку подсистемы DRM. Проверьте модель, определив активные клиенты DRM и владельца точки сериализации, затем внесите минимальное изменение: дождитесь завершения или корректно завершите зависшего владельца перед повторной попыткой. Сохраните первый статус нижнего уровня рядом с NS_E_DRM_BUSY, поскольку HRESULT оболочки иначе может скрыть компонент, сформировавший ошибку.
Входные данные для проверки
| Поле | Значение для NS_E_DRM_BUSY |
|---|---|
| Владелец | операция, API или обратный вызов, идентификатор объекта или сеанса и версия компонента или устройства, связанные с NS_E_DRM_BUSY |
| Прямая проверка | определить активные клиенты DRM и операцию, владеющую точкой сериализации |
| Входные данные политики | запрошенное действие и точное свойство лицензии, сертификата, профиля, выхода или регистрации, проверяемое при NS_E_DRM_BUSY |
| Временное состояние | доверенное или системное время, интервал действия, последовательность запросов и номер повторной попытки, если они влияют на NS_E_DRM_BUSY |
| Результат нижнего уровня | самый ранний статус хранилища, сети, криптографического компонента, драйвера или поставщика перед итоговой оболочкой NS_E_DRM_BUSY |
Разные владельцы, похожее диалоговое окно
| Результат | Почему он указывает на другую причину |
|---|---|
NS_E_DRM_SIGNATURE_FAILURE | не удалось создать или проверить подпись заголовка защищённого содержимого |
NS_E_DRM_LICENSE_SERVER_INFO_MISSING | клиент не может прочитать конфигурацию, определяющую или описывающую службу лицензирования |
NS_E_DRM_PD_TOO_MANY_DEVICES | данные регистрации переносных носителей уже содержат максимально поддерживаемое число целевых устройств |
Отделение причины от оболочки
Для NS_E_DRM_BUSY, установленный факт состоит в том, что другой процесс или операция удерживает блокировку подсистемы DRM. Для NS_E_DRM_BUSY этот факт сам по себе не доказывает повреждение медиаданных, отсутствие декодера, общий сетевой сбой или недействительность прав для всех остальных действий.
Если Player, кодировщик, программа установки или уровень устройства позднее выдаёт более общую ошибку, сохраните NS_E_DRM_BUSY как первый конкретный результат. Объект и операция, связанные с NS_E_DRM_BUSY, обычно диагностически ценнее более позднего результата очистки или сводного сообщения интерфейса.
Проверка без уничтожения данных
- Сохраните
NS_E_DRM_BUSYи0xC00D2841до очистки, перехода к резервному пути или смены контекста другим медиаэлементом. - Примените узкое исправление для
NS_E_DRM_BUSY: дождитесь завершения или корректно завершите зависшего владельца перед повторной попыткой. - Свяжите
NS_E_DRM_BUSYс текущим объектом внутренних компонентов клиента Windows Media DRM и запрошенным действием. - Выполните прямую проверку для
NS_E_DRM_BUSY: определите активные клиенты DRM и операцию, владеющую точкой сериализации. - Сравните сбой с заведомо исправным случаем, изменив только свойство, указанное этим условием: другой процесс или операция удерживает блокировку подсистемы DRM.
- Повторите то же действие с тем же содержимым и идентификатором устройства и убедитесь, что
NS_E_DRM_BUSYне заменена другой ошибкой политики или доверия.
Когда повтор допустим
Соответствующее исправление — дождаться завершения или корректно завершить зависшего владельца перед повторной попыткой. Для NS_E_DRM_BUSY успех означает принятие того же запрошенного действия после этого точного изменения состояния, а не просто работу другого файла или устройства.
- Данные для
NS_E_DRM_BUSYлегко уничтожить; не заменяйте двоичные файлы DRM и не изменяйте состояние реестра до записи их версий и подписей, иначе несовместимость компонента нельзя будет отличить от повреждённого объекта лицензии. - Не изменяйте доверенное время, контроль отзыва, проверку сертификатов или политику выхода только ради подавления
NS_E_DRM_BUSY; это обходит решение, а не исправляет его входные данные. - Сохраните один сбойный и один исправленный артефакт, чтобы устранение
NS_E_DRM_BUSYможно было проверять при регрессионном тестировании.
Итоговая проверка
В итоговом тесте NS_E_DRM_BUSY по возможности оставьте неизменными KID содержимого или хэш файла, запрошенное действие, пользователя или учётную запись, идентификатор устройства и маршрут выхода. Случай NS_E_DRM_BUSY разрешён только тогда, когда операция завершается без этого HRESULT и без замещающей ошибки соседней проверки лицензии, доверия, сеанса или политики.
Технические ссылки для NS_E_DRM_BUSY
- Интерфейсы клиента Windows Media DRM — документирует границу протокола или API, связанную с NS_E_DRM_BUSY.
- Возможности управления цифровыми правами — описывает нормативный рабочий процесс, относящийся к NS_E_DRM_BUSY.
- Лицензии и локальное хранилище лицензий — перечисляет переходы безопасности и состояния, используемые при интерпретации NS_E_DRM_BUSY.
- Коды ошибок Windows Media Format SDK — определяет объекты платформы, используемые при диагностике NS_E_DRM_BUSY.
Нужно найти другой код? Найти другой код состояния или ошибки.