| Предыдущий | Следующий |
| NS_E_WMP_EXTERNAL_NOTREADY | NS_E_WMP_UI_SUBCONTROLSNOTSUPPORTED |
NS_E_WMP_MLS_STALE_DATA
На каком этапе остановился Player
Windows Media Player сообщает, что NS_E_WMP_MLS_STALE_DATA (0xC00D0FDD) возвращается, когда чувствительные ко времени данные Media Library Service больше не согласуются с часами компьютера или ожидаемым окном актуальности. Этот результат формируется ядром, которое разрешает Player.URL, выбирает или строит граф воспроизведения, выбирает кодеки и устройства, выполняет preroll и переключает элементы списка, сообщая асинхронные ошибки.
Для дополнительной проверки сохраните UTC/локальное время, часовой пояс, источник синхронизации и timestamp устаревших данных; это полезнее переустановки проигрывателя или одновременного изменения нескольких несвязанных настроек.
Порядок расследования
- Начните с символьного значения
NS_E_WMP_MLS_STALE_DATA; не определяйте причину устаревших данных MLS только по итоговому диалоговому сообщению. - До автоматического восстановления сохраните байты или состояние объекта, вызвавшие это условие.
- Убедитесь, что источником события не является устаревший обратный вызов или уже заменённое поколение объекта.
- Для подтверждения причины сохраните UTC/локальное время, часовой пояс, источник синхронизации и timestamp устаревших данных.
- Исправьте только непосредственную причину: восстановите корректный источник системного времени и заново получите чувствительные ко времени данные, а не редактируйте кэшированный timestamp.
Сопутствующее состояние WMP
URL, элемент списка воспроизведения, выбранный источник, граф и кодек — разные объекты; сбой одного не следует диагностировать одновременной заменой всех. Кроме того, пути Error и MediaError могут поставить в очередь несколько результатов, поэтому первый конкретный HRESULT и его контекст ошибки полезнее последнего сообщения.
Показательный случай: Скачок системных часов делает ранее допустимые метаданные или состояние службы выглядящими как данные из будущего либо уже истёкшие. Пример локализует только компонент, сформировавший ошибку.
Данные, различающие причины
Сохраните первое появление исходного HRESULT до того, как повтор или резервный путь изменит диагностические данные. Зафиксируйте одно согласованное поколение объекта:
| Поле | Что записать |
|---|---|
| Решающая проверка | Сохраните UTC/локальное время, часовой пояс, источник синхронизации и timestamp устаревших данных |
| Идентичность артефакта | play state и переход непосредственно перед сбоем для воспроизведения этого условия |
| Состояние среды выполнения | идентичность и версию выбранного graph/source/filter или codec для воспроизведения этого условия |
| Ответственный объект | идентичность audio/video device и поколение driver для воспроизведения этого условия |
| Результат нижнего уровня | упорядоченную очередь ErrorItem с errorCode, errorContext и media object для воспроизведения этого условия |
| Корреляция | Player.URL, текущий media sourceURL и разрешённый final URL для воспроизведения этого условия |
Записывайте в журнал пути, хэши, идентификаторы, смещения и HRESULT. Не включайте в журналы секретные и не относящиеся к сбою данные.
Не путайте с близкими результатами
| Результат | Другая граница |
|---|---|
NS_E_NEED_TO_ASK_USER | Операция достигла точки политики или выбора, требующей интерактивного ввода пользователя |
NS_E_NO_ERROR_STRING_FOUND | подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания |
NS_E_WMP_SENDMAILFAILED | проигрыватель не смог передать ссылку на мультимедиа настроенному почтовому клиенту |
Если после этого появляется более общий результат «не удаётся воспроизвести», «не удаётся загрузить» или «операция завершилась ошибкой», сохраняйте более раннее событие. Более поздний код может быть следствием работы оболочки, резервного элемента или слоя интерфейса, а не исходным сбоем.
Проверка после исправления
После исправления создайте новый объект проигрывателя, элемента управления, анализатора или списка воспроизведения и снова выполните минимальный пример для этого сценария. Проверьте полученный ресурс, членство в списке, сохранённый файл, объект библиотеки или состояние воспроизведения.
Что должно измениться при реальном исправлении
Целевое исправление — восстановить корректный источник системного времени и заново получить чувствительные ко времени данные, а не менять кэшированный timestamp. Сохраняйте исходные данные до успешной проверки после одного контролируемого изменения.
- Не устанавливайте наборы кодеков до определения запрошенного подтипа мультимедиа и отсутствующего компонента: это может изменить данные или состояние, необходимые для объяснения исходного результата.
- Не очищайте очередь ошибок и не переходите к другому элементу списка воспроизведения, пока не сохранён первый сбойный медиаобъект: это может заменить исходный HRESULT вторичной ошибкой другого уровня.
Практическое примечание для этого кода
Используйте NS_E_WMP_MLS_STALE_DATA, 0xC00D0FDD и символическую фразу вместе в трассировке. Сопоставляйте их с API и идентификатором объекта.
Технические ссылки
- SDK Windows Media Player — документация, используемая для определения границы-источника этого результата.
- Событие MediaError проигрывателя — нормативный или платформенный материал для этого результата.
- Объект ErrorItem — контекст API или формата для этого результата.
- Поддерживаемые протоколы и типы файлов
NS_E_WMP_MLS_STALE_DATA.
Нужно найти другой код? Найти другой код состояния или ошибки.
