| Предыдущий | Следующий |
| NS_E_WMPOCX_PLAYER_NOT_DOCKED | NS_E_WMP_MLS_STALE_DATA |
NS_E_WMP_EXTERNAL_NOTREADY
Точное условие, стоящее за сообщением
это HRESULT 0xC00D0FDC. В данном случае это означает, что внешний объект автоматизации WMP ещё не достиг состояния, необходимого для вызова; результат относится к времени жизни элемента управления ActiveX Windows Media Player и объекта COM, а не к неопределённой ошибке проигрывателя.
Сгенерированная часть страницы What Is уже содержит стандартное описание AllStat для этого результата. Для дополнительной проверки зафиксируйте создание объекта, событие подключения/готовности и первый вызванный метод; эти данные полезнее переустановки проигрывателя или одновременного изменения нескольких несвязанных настроек.
Как доказать условие
- Найдите первый компонент, вернувший этот HRESULT и отметьте это событие как момент отсутствия готовности внешнего объекта.
- Зафиксируйте входные данные и идентификатор объекта до того, как резервная обработка или очистка WMP изменит состояние.
- Восстановите последнее успешное состояние непосредственно перед сбоем, затем определите вызов или событие, после которого объект перестал удовлетворять требованию готовности.
- Проведите проверку для этого кода: зафиксируйте создание объекта, событие подключения/готовности и первый вызванный метод.
- Внесите минимальное исправление — дождитесь готовности либо пересоздайте внешний объект после неудачной инициализации — и повторите тот же вызов.
Минимальный полезный набор данных об инциденте
Для этого результата, зафиксируйте состояние до того, как проигрыватель продолжит обработку, перезагрузит данные, выполнит повторное сканирование или уничтожит владеющий объект:
- Решающая проверка: зафиксируйте создание объекта, событие подключения/готовности и первый вызванный метод.
- Артефакт: порядок завершения работы окна-хоста, элемента управления, механизма воспроизведения и подключаемых модулей.
- Состояние: процесс-хост и версию элемента управления, uiMode и тип службы (удалённая или локальная).
- Идентичность объекта: тип COM apartment и поток, создавший элемент управления.
- Исходные данные: результат IWMPRemoteMediaServices и состояния isRemote/docked.
- Корреляция: GIT cookie либо версию маршалированного интерфейса событий.
В журналах сохраняйте точные пути или URL, хэши, идентификаторы объектов, смещения и порядок HRESULT, когда они применимы. Не записывайте учётные данные, защищённое содержимое лицензий и посторонние данные медиатеки.
Почему важен компонент-источник
При диагностике учитывайте: локальный ActiveX-элемент, удалённо управляемый элемент и полнофункциональный проигрыватель могут совместно использовать службы воспроизведения, но иметь разные состояния окна, закрепления и времени жизни. Межапартаментные callback требуют действительных маршалированных интерфейсов; работающий механизм воспроизведения не доказывает, что хост всё ещё владеет пригодным интерфейсом событий или ошибок.
Характерный случай отсутствия готовности внешнего объекта: Сценарий вызывает внешнюю службу проигрывателя сразу после её запроса. Такой пример локализует состояние неготовности и не предполагает одновременный сбой медиатеки, стека кодеков, механизма обложек и ActiveX-хоста.
Узкий путь исправления
Устраняйте NS_E_WMP_EXTERNAL_NOTREADY где возникает состояние неготовности: дождитесь готовности либо пересоздайте внешний объект после неудачной инициализации. После исправления перезагрузите или пересоздайте владеющий объект, чтобы закэшированное состояние ошибки не было принято за результат повторной проверки.
- Не используйте указатель интерфейса напрямую в другом COM apartment: это может уничтожить объект или состояние, необходимое для объяснения
NS_E_WMP_EXTERNAL_NOTREADY. - Не уничтожайте окно-хост до фиксации состояния элемента управления и первого сбоя callback: иначе исходный HRESULT может быть заменён вторичной ошибкой другого уровня.
Соседние коды, которые нужно различать
| Результат | Другая граница |
|---|---|
NS_E_WMPOCX_PLAYER_NOT_DOCKED | запрошенное действие требует, чтобы удалённый проигрыватель находился во встроенном закреплённом состоянии |
NS_E_PLUGIN_NOTSHUTDOWN | подключаемый модуль Windows Media Player не завершил предусмотренную процедуру остановки |
NS_E_WMPOCX_ERRORMANAGERNOTAVAILABLE | встроенный элемент управления ActiveX не может предоставить хосту свой диспетчер ошибок автоматизации |
Если NS_E_WMP_EXTERNAL_NOTREADY сменяется более общим результатом «невозможно воспроизвести», «невозможно загрузить» или «операция завершилась ошибкой», сохраните более раннее событие неготовности. Поздний код может быть следствием оболочки, резервного элемента или уровня интерфейса, а не первичной причиной.
Критерии завершения
Повторите действие, вернувшее этот HRESULT и убедитесь, что тот же объект проходит прежнюю точку отказа. Успех означает переход к следующему ожидаемому состоянию загрузки, разбора, списка воспроизведения, управления или воспроизведения, а не простое исчезновение диалогового окна.
Характерная картина сбоя
Используйте NS_E_WMP_EXTERNAL_NOTREADY, 0xC00D0FDC и фразу «external not ready» вместе при поиске по трассировкам и задачам. Храните эти ключи рядом с вызвавшим API, идентификатором объекта, URL или смещением файла, чтобы событие можно было отличить от общего сообщения проигрывателя.
Технические ссылки
- Руководство по элементу управления Player — нормативный или платформенный материал для этого результата.
- Удалённое управление Windows Media Player — контекст API или формата для этого результата.
- Использование обложек с элементом управления — документация, используемая для определения границы-источника
NS_E_WMP_EXTERNAL_NOTREADY. - Интерфейс IGlobalInterfaceTable — нормативный или платформенный материал для этого результата.
Нужно найти другой код? Найти другой код состояния или ошибки.
