Что означает код HRESULT 0xC00D1177 (NS_E_DEVICE_IS_NOT_READY)?

 
Предыдущий Следующий
NS_E_NO_CD_BURNER NS_E_PDA_UNSUPPORTED_FORMAT

NS_E_DEVICE_IS_NOT_READY

Граница сбоя и её владелец

NS_E_DEVICE_IS_NOT_READY со значением 0xC00D1177 фиксирует условие открытие хранилища устройства до того, как поставщик служб сообщил о готовности. Для NS_E_DEVICE_IS_NOT_READY, вызов-источник и его состояние важнее для диагностики, чем более поздняя сводная ошибка Player.

Механизм возникновения

На контрольной точке NS_E_DEVICE_IS_NOT_READY Windows Media Device Manager выступает посредником между Player, поставщиком служб устройства и транспортами MTP, массового хранилища или устаревших устройств. Перечисление, идентификация Plug and Play, доступность хранилища, поддержка формата и отдельные файловые операции являются разными проверками. Граница этой страницы — открытие хранилища до сообщения поставщика служб о готовности.

При NS_E_DEVICE_IS_NOT_READY устройство, отображаемое в Проводнике, всё равно может исчезнуть из сеанса WMDM Player или отклонить формат мультимедиа, имя файла, операцию с каталогом либо запрос к хранилищу. Условие воспроизводится, когда устройство уже появилось в PnP, но его внутренняя база данных ещё подключается.

Поля трассировки, которые следует сохранить

ДанныеПочему это важно для неготового устройства
Объект и операция, вернувшие ошибкуэкземпляр PnP и путь интерфейса, CLSID поставщика служб WMDM, идентификатор устройства или партнёрства, поколение подключения, объект хранилища и его ёмкость, результат проверки поддержки формата, версия прошивки, обратный вызов операции и первый HRESULT устройства или транспорта
Решающие сведенияготовность устройства, перечисление хранилища, ход инициализации и результат транспорта
Идентификатор поколенияЗафиксируйте то же поколение диска, устройства, задания или операции Player, которое вернуло NS_E_DEVICE_IS_NOT_READY; повторное подключение или смена носителя создаёт другой тест.
Исходный результатСохраните первый результат устройства, файловой системы, COM, кодека, DirectShow, IMAPI или BITS, полученный до того, как Player сопоставил его с NS_E_DEVICE_IS_NOT_READY.
Контролируемое сравнениеПовторите вызов-источник, изменив только это условие: дождитесь инициализации или переподключите устройство, затем получите новые объекты хранилища.

Что доказывает сравнение

НаблюдениеТолкование
Зафиксированные значения соответствуют границеРезультат соответствует открытию хранилища до сообщения поставщика служб о готовности; исправьте это состояние до изменения не связанных с ним кодеков, драйверов или списков воспроизведения.
Сбой нижнего уровня произошёл до NS_E_DEVICE_IS_NOT_READYСохраните этот более ранний HRESULT или результат устройства, поскольку NS_E_DEVICE_IS_NOT_READY может быть лишь его отображением на уровне Player.
Тот же вызов проходит после одного изолированного измененияСравнение подтверждает диагноз неготового устройства, а не общий сбой установки.
После повторной проверки код изменился на NS_E_DEVICE_IS_NOT_READYГраница NS_E_DEVICE_IS_NOT_READY пройдена; диагностируйте новый HRESULT как следующую независимую стадию.

NS_E_DEVICE_IS_NOT_READY ограничивает область сбоя открытие хранилища устройства до того, как поставщик служб сообщил о готовности. Наличие NS_E_DEVICE_IS_NOT_READY не доказывает общесистемный сбой мультимедиа; перед изменением не связанных компонентов Player определите операцию, которой принадлежит ошибка.

Путь принятия решения

  1. Зафиксируйте 0xC00D1177, NS_E_DEVICE_IS_NOT_READY, точную операцию Player/API и момент первого появления ошибки.
  2. Сохраните готовность устройства, результат перечисления хранилища, ход инициализации и результат транспорта до извлечения носителя, переподключения устройства, отмены задания или перестроения объекта Player.
  3. Для NS_E_DEVICE_IS_NOT_READY, сопоставьте результат с экземпляром PnP и путём интерфейса, CLSID поставщика служб WMDM, идентификатором устройства или партнёрства, поколением подключения, объектом хранилища и его ёмкостью, результатом поддержки формата, версией прошивки, обратным вызовом операции и первым HRESULT устройства или транспорта.
  4. Один раз воспроизведите сбой с исходным источником и назначением, затем внесите только одно изменение: дождитесь инициализации или переподключите устройство, после чего получите новые объекты хранилища.
  5. Создайте новое поколение операции и убедитесь, что исходный вызов проходит границу неготового устройства.

Близкие по смыслу результаты

Связанный результатДругая диагностическая граница
NS_E_PDA_UNSUPPORTED_FORMATпроверка операции с переносным устройством на соответствие формату объекта
NS_E_NO_PDAперечисление переносного устройства для запрошенной операции Player
NS_E_PDA_UNSPECIFIED_ERRORполучение ошибки устройства или поставщика служб без более конкретного сопоставления Player

Безопасное исправление

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

При проверке NS_E_DEVICE_IS_NOT_READY не считайте старый указатель интерфейса действительным после переподключения; заново перечислите устройство и объекты хранилища и сопоставьте сбой с тем же поколением подключения.

Исходные материалы


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