| Предыдущий | Следующий |
| NS_E_DATA_UNIT_EXTENSION_TOO_LARGE | NS_E_FEATURE_DISABLED_BY_GROUP_POLICY |
NS_E_CODEC_DMO_ERROR
Что означает NS_E_CODEC_DMO_ERROR в принадлежащем ему API
При появлении NS_E_CODEC_DMO_ERROR (0xC00D0BDA) первым заблокированным переходом является операционный сбой кодека, размещённого через путь DMO. На практике проверку формата для этой ошибки следует восстанавливать по тому же URL, потоку, поколению объекта и последовательности вызовов.
При разборе этого случая Windows Media Format отделяет профиль сжатого потока от исходного необработанного формата и от декодированного выходного формата, выбранного объектом чтения. Затем объект записи пакетирует образцы, применяет атрибуты и необязательные расширения единиц данных, поэтому сбой на одной границе не доказывает, что сам контейнер ASF нечитаем. При NS_E_CODEC_DMO_ERROR сохраните самый ранний результат нижнего уровня, поскольку оболочки могут сопоставить несколько разных причин одному HRESULT.
Контролируемая проверка формата мультимедиа
- Во время контролируемой повторной проверки зафиксируйте
0xC00D0BDA,NS_E_CODEC_DMO_ERROR, точную операцию и время первого сбоя. - Сохраните CLSID или подтип кодека, версию установленного двоичного файла, выбранные входной и выходной типы мультимедиа, первый HRESULT кодека и временную метку образца, на котором остановилась обработка.
- После сбоя DMO пересоздайте граф и объект чтения, чтобы проверять новый экземпляр кодека, а не устаревшее состояние.
- Выполните один изолированный тест: подайте минимальный заведомо исправный образец с тем же согласованным типом мультимедиа и зафиксируйте первый специфический сбой кодека до его отображения SDK.
- Повторите операцию через тот же API и тот же протокольный путь; другой проигрыватель или локальная копия полезны только для сравнения, но не доказывают устранение проверки формата.
- Убедитесь, что согласование формата DMO завершается, а последующий HRESULT фиксируется как отдельная стадия обработки.
Что завершилось, а что нет
До проверки формата, завершившейся ошибкой кодека DMO, предыдущая настройка могла пройти успешно, но операция кодека, размещённого через путь DMO, не была завершена. Поэтому в журнале следует сохранять как последний успешный вызов, так и NS_E_CODEC_DMO_ERROR.
Целевое сравнение — подать минимальный заведомо исправный образец с тем же согласованным типом мультимедиа и зафиксировать первый специфический сбой кодека до его отображения SDK. Это изменяет спорное предварительное условие, не меняя идентичность мультимедиа и не связанные с ней параметры системы.
Данные профиля и образца
| Что зафиксировать | Почему это отделяет NS_E_CODEC_DMO_ERROR |
|---|---|
| Владеющий вызов | Запишите метод API, идентификатор объекта, поток или обратный вызов и временную метку проверки формата, завершившейся ошибкой кодека DMO. |
| Решающие значения | CLSID или подтип кодека, версия установленного двоичного файла, выбранные входной и выходной типы мультимедиа, первый HRESULT кодека и временная метка образца, на котором остановилась обработка |
| Поколение объекта | Укажите, когда были созданы объект чтения или записи, граф, объект URL, потоковый сеанс или поставщик метаданных; устаревшее состояние может воспроизводить NS_E_CODEC_DMO_ERROR после изменения конфигурации. |
| Первый вложенный результат | Сохраните самый ранний статус кодека, COM, сокета, DNS, синтаксического анализатора или поставщика до NS_E_CODEC_DMO_ERROR; последующие сообщения интерфейса менее конкретны. |
| Случай для сравнения | Используйте один заведомо исправный ресурс, проходящий ту же проверку формата, и измените только отклонённое предварительное условие. |
Как интерпретировать следующий HRESULT
| Результат повторной проверки | Толкование для NS_E_CODEC_DMO_ERROR |
|---|---|
| Идентичный вызов по-прежнему возвращает код | Значения, управляющие проверкой формата, не изменились либо вызывающий код всё ещё использует объект предыдущего поколения. |
| Новый объект работает успешно | На NS_E_CODEC_DMO_ERROR повлияло время жизни объекта или кэшированное состояние; исправьте пересоздание объекта вместо применения общесистемного обходного решения. |
| Вызов переходит к другому HRESULT | Граница проверки формата для ошибки кодека DMO пройдена. Если появляется новый код, исследуйте конкретную стадию активации DMO, согласования формата или обработки образцов. |
| Сбой возникает только с одним ресурсом | Данные указывают на состояние конкретного содержимого, URL, точки публикации, потока, атрибута или объекта, а не на общий отказ. |
Действия, вводящие в заблуждение
- установка не связанных пакетов кодеков до сохранения фактического CLSID кодека и первого внутреннего сбоя;
- не стирайте первое появление
NS_E_CODEC_DMO_ERRORмногократными повторными попытками: обратные вызовы и переподключения могут заменить полезное состояние более поздней ошибкой оболочки; - не публикуйте учётные данные, материалы защищённого содержимого или полные частные URL. Записывайте обезличенные идентификаторы, длины, хэши и поля протокола, необходимые для воспроизведения проверки формата.
Соседние результаты не взаимозаменяемы
Главное отличие: этот результат относится к обработке формата, профиля или образца, а не только к разрешению имени файла или сетевого адреса.
| Соседний HRESULT | Как его сравнивать |
|---|---|
NS_E_INVALID_EDL | Сравните владеющий API и первое отклонённое значение; этот результат относится к соседней контрольной точке и не обязательно имеет ту же причину, что и NS_E_CODEC_DMO_ERROR. |
NS_E_DATA_UNIT_EXTENSION_TOO_LARGE | Если оба кода встречаются в одной трассировке, определите основной результат по состоянию объекта и порядку операций. |
NS_E_FEATURE_DISABLED_BY_GROUP_POLICY | Сохраните этот результат отдельно, если он появляется только после устранения условия NS_E_CODEC_DMO_ERROR. |
Технические источники
- Обзор Windows Media Format SDK
- Входные, потоковые и выходные форматы
- Профили
- Объекты Windows Media SDK
- Реестр HRESULT Microsoft
Для NS_E_CODEC_DMO_ERROR сохраните трассировку после исправления, чтобы более поздний результат конвейера не был ошибочно принят за повторение этой границы.
Нужно найти другой код? Найти другой код состояния или ошибки.