| Предыдущий | Следующий |
| NS_E_SHARING_VIOLATION | NS_E_WMPOCX_NO_REMOTE_CORE |
NS_E_NO_ERROR_STRING_FOUND
Точное условие за диалогом
Windows Media Player сообщает, что NS_E_NO_ERROR_STRING_FOUND (0xC00D0FD0) возвращается, когда подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания. Условием отсутствия строки ошибки управляет core, который разрешает Player.URL, выбирает или строит playback graph, выбирает codecs и devices, выполняет preroll media и переходит между playlist items, сообщая об асинхронных ошибках.
Сгенерированная часть страницы What Is уже показывает стандартное описание AllStat для него. Дополнительная проверка этого условия — сохранить numeric code, symbolic mapping, error context и module, который его сформировал; эти данные полезнее переустановки Player или одновременного изменения нескольких несвязанных настроек.
Входные данные, различающие причины
Сохраните первый этот результат до того, как retry или fallback изменит данные об отсутствии строки ошибки. Следующие поля должны относиться к одному поколению объекта:
| Поле | Что записать |
|---|---|
| Решающая проверка | сохраните numeric code, symbolic mapping, error context и module, который его сформировал |
| Идентичность артефакта | упорядоченную очередь ErrorItem с errorCode, errorContext и media object для воспроизведения отсутствия строки ошибки |
| Состояние среды выполнения | Player.URL, текущий media sourceURL и разрешённый final URL для воспроизведения отсутствия строки ошибки |
| Ответственный объект | play state и переход непосредственно перед сбоем для воспроизведения отсутствия строки ошибки |
| Результат нижнего уровня | идентичность и версию выбранного graph/source/filter или codec для воспроизведения отсутствия строки ошибки |
| Корреляция | идентичность audio/video device и поколение driver для воспроизведения отсутствия строки ошибки |
Логи этого случая должны сохранять точные paths или URLs, hashes, object IDs, offsets и порядок HRESULT, где это применимо. Они не должны содержать учётные данные, protected-license payloads или постороннее содержимое library при проверке «подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания».
Сопутствующее состояние WMP
Для этого условия URL, playlist item, выбранный source, graph и codec — разные объекты; сбой одного нельзя диагностировать одновременной заменой всех. Пути Error и MediaError могут ставить в очередь несколько результатов, поэтому первый конкретный HRESULT и его error context полезнее последнего диалога.
Характерный случай отсутствия строки ошибки: Код нового component отсутствует в установленных message resources. Этот пример локализует формирующую границу, не предполагая одновременный сбой library, codec stack, skin engine и ActiveX host для состояния «подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания».
Не смешивайте с соседними результатами
| Результат | Другая граница |
|---|---|
NS_E_DEVICE_NOT_READY | указанное device присутствует или выбрано, но не готово к запрошенной операции |
NS_E_WMP_WINDOWSAPIFAILURE | нижний Windows API завершился ошибкой, не оставив более конкретного кода для wrapper WMP |
NS_E_NEED_TO_ASK_USER | операция дошла до точки policy или выбора, требующей интерактивного ввода пользователя |
Если этот результат сопровождается более общим результатом «cannot play», «cannot load» или «operation failed», сохраняйте более раннее событие отсутствия строки ошибки. Более поздний код может быть следствием wrapper, fallback item или UI layer, а не исходного сбоя при проверке «подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания».
Порядок расследования
- Начинайте с символьного значения этот результат; не диагностируйте отсутствие строки ошибки только по последнему диалогу.
- Зафиксируйте bytes или object state, сформировавшие этот результат, до того, как automatic recovery изменит их.
- Исключите stale callback или заменённое поколение объекта как источник события отсутствия строки ошибки.
- Используйте решающее наблюдение: сохраните numeric code, symbolic mapping, error context и module, который его сформировал.
- Примените минимальное поддерживаемое исправление: диагностируйте по code/context, а не заменяйте результат выдуманным общим сообщением.
Проверка после исправления
После исправления создайте новый Player, control, parser или playlist object и повторите минимальный reproducer для него. Проверьте полученный resource, membership в list, сохранённый file, library object или play state.
Что должно изменить настоящее исправление
Целевое исправление — диагностировать по code/context, а не заменять результат выдуманным общим сообщением. Сохраняйте исходный failing input, пока та же операция не завершится успешно после одного контролируемого изменения.
- Не устанавливайте широкие codec packs до определения запрошенного media subtype и отсутствующего component; это может уничтожить артефакт или состояние, необходимое для объяснения он.
- Не очищайте error queue и не переходите к другому playlist item до сохранения первого сбойного media object; это может заменить исходный HRESULT вторичной ошибкой другого уровня.
Практическое замечание для этого кода
Используйте он, 0xC00D0FD0 и фразу «no error string found» вместе в traces и поиске инцидентов. Храните эти ключи рядом с producing API, object ID, URL или file offset, чтобы событие оставалось отличимым от общего сообщения Player при проверке «подсистема ошибок имеет HRESULT, но для него отсутствует локализованная строка описания».
Технические ссылки
- SDK Windows Media Player — документация для определения границы, формирующей он.
- Событие MediaError Player — нормативный или платформенный материал, относящийся к нему.
- Объект ErrorItem — контекст API или формата для него.
- Поддерживаемые протоколы и типы файлов — документация для определения границы, формирующей он.
Нужно найти другой код? Найти другой код состояния или ошибки.
