Что означает код HRESULT 0xC00D0BD9 (NS_E_DATA_UNIT_EXTENSION_TOO_LARGE)?

 
Предыдущий Следующий
NS_E_INVALID_EDL NS_E_CODEC_DMO_ERROR

NS_E_DATA_UNIT_EXTENSION_TOO_LARGE

NS_E_DATA_UNIT_EXTENSION_TOO_LARGE: данные, граница и повторная проверка

Практический смысл NS_E_DATA_UNIT_EXTENSION_TOO_LARGE (0xC00D0BD9) состоит не в том, что «обработка мультимедиа завершилась ошибкой», а в том, что данные расширения отдельного образца превышают размер, который можно прикрепить к этому образцу. Это локализует сбой на проверке медиаформата, связанной со слишком большим расширением единицы данных, и определяет сведения, которые нужно собрать до того, как повторная попытка изменит состояние.

В диагностике слишком большого расширения единицы данных Windows Media Format разделяет профиль сжатого потока, исходный формат входных данных и декодированный выходной формат, выбранный объектом чтения. Затем объект записи пакетирует образцы, применяет атрибуты и необязательные расширения единиц данных, поэтому сбой на одной границе сам по себе не доказывает, что контейнер ASF не читается. При NS_E_DATA_UNIT_EXTENSION_TOO_LARGE сохраните самый ранний низкоуровневый результат: оболочки могут сопоставлять одному HRESULT несколько разных причин на этой контрольной точке.

Данные профиля и образцов

Что сохранитьКак это помогает выделить NS_E_DATA_UNIT_EXTENSION_TOO_LARGE
Ответственный вызовЗапишите метод API, идентификатор объекта, поток или обратный вызов и метку времени проверки медиаформата, связанной со слишком большим расширением единицы данных.
Решающие значенияОбъект чтения или записи, номера потока и входа, идентификатор профиля, временные метки образцов, размеры буферов, а также первый обратный вызов или вызов SDK, вернувший код при контролируемой повторной проверке.
Поколение объектаОтметьте, когда были созданы объект чтения, объект записи, граф, объект URL, потоковый сеанс или поставщик метаданных; устаревшее состояние может повторно вызвать NS_E_DATA_UNIT_EXTENSION_TOO_LARGE после изменения конфигурации.
Первый вложенный результатСохраните самый ранний статус кодека, COM, сокета, DNS, анализатора или поставщика до NS_E_DATA_UNIT_EXTENSION_TOO_LARGE; более поздние сообщения интерфейса менее конкретны.
Случай для сравненияИспользуйте заведомо исправный ресурс, который проходит ту же проверку медиаформата, изменив только отклонённое предварительное условие.

Анатомия сбоя

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

В качестве отрицательного контроля откройте то же содержимое с минимальной конфигурацией объекта чтения или записи и добавляйте спорный параметр только после успешной базовой проверки. Если после изменения размера расширения появляется другой HRESULT, ограничение этого образца уже не блокирует обработку; исследуйте следующую границу отдельно.

Близкие результаты не взаимозаменяемы

Главное различие: этот результат относится к обработке формата, профиля или образца, а не только к разрешению имени файла или сетевого адреса.

Близкий HRESULTКак его сравнивать
NS_E_ATTRIBUTE_NOT_ALLOWEDСравните ответственный API и первое отклонённое значение; это соседняя контрольная точка, а не обязательно та же причина, что и у NS_E_DATA_UNIT_EXTENSION_TOO_LARGE.
NS_E_INVALID_EDLПо состоянию объекта и порядку операций определите, какой код является первичным, если оба появляются в одной трассировке диагностики слишком большого расширения единицы данных.
NS_E_CODEC_DMO_ERRORСохраните этот результат отдельно, если он появляется только после устранения условия NS_E_DATA_UNIT_EXTENSION_TOO_LARGE.

Контролируемая проверка медиаформата

  1. Запишите 0xC00D0BD9, NS_E_DATA_UNIT_EXTENSION_TOO_LARGE, точную операцию и время первого сбоя на контрольной точке слишком большого расширения единицы данных.
  2. Сохраните объект чтения или записи, номера потока и входа, идентификатор профиля, временные метки образцов, размеры буферов и первый обратный вызов или вызов SDK, вернувший код.
  3. Не используйте повторно граф, сеанс, объект чтения или метаданных, созданный до изменения соответствующей конфигурации или ресурса.
  4. Выполните одну изолированную проверку: откройте то же содержимое с минимальной конфигурацией объекта чтения или записи и добавьте спорный параметр только после успешной базовой проверки.
  5. Повторите проверку через тот же API и тот же протокольный путь; другой проигрыватель или локальная копия полезны только для сравнения и не доказывают исправление этой проверки медиаформата.
  6. Подтвердите ожидаемое следующее состояние и сохраните любой новый HRESULT как отдельный результат последующего этапа.

Как интерпретировать следующий HRESULT

Результат повторной проверкиТолкование для NS_E_DATA_UNIT_EXTENSION_TOO_LARGE
Тот же вызов по-прежнему возвращает кодЗначения, управляющие проверкой медиаформата, не изменились, либо вызывающая сторона всё ещё использует объект предыдущего поколения.
Новый объект работает успешноНа NS_E_DATA_UNIT_EXTENSION_TOO_LARGE повлияло время жизни или кэшированное состояние; исправьте пересоздание объекта вместо применения обходного решения ко всей системе.
Вызов доходит до другого HRESULTГраница проверки слишком большого расширения единицы данных пройдена. Разбирайте новый код в контексте компонента, который теперь получил образец или связанные с ним метаданные.
Ошибка возникает только для одного ресурсаДанные указывают на состояние конкретного содержимого, URL, точки публикации, потока, атрибута или объекта, а не на общий отказ.

Действия, вводящие в заблуждение

  • Одновременное изменение нескольких параметров профиля и кодека скрывает первое несовместимое поле до завершения расследования.
  • Не стирайте данные о первом появлении NS_E_DATA_UNIT_EXTENSION_TOO_LARGE многократными повторами: обратные вызовы и переподключения могут заменить полезное состояние более поздней ошибкой оболочки.
  • При передаче материалов для анализа удаляйте учётные данные, защищённое содержимое и закрытые части URL. Для воспроизведения достаточно обезличенных идентификаторов, размеров, хэшей и необходимых полей протокола.

Технические ссылки

Считайте NS_E_DATA_UNIT_EXTENSION_TOO_LARGE устранённой только после прохождения этой контрольной точки тем же путём API; успех в другом проигрывателе или с кэшированной копией является лишь дополнительным подтверждением.


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