Что означает код HRESULT 0xC00D1B80 (NS_E_NOSOURCEGROUPS)?

 
Предыдущий Следующий
NS_E_INVALIDCALL_WHILE_ENCODER_STOPPED NS_E_INVALIDINPUTFPS

NS_E_NOSOURCEGROUPS

Диагностический смысл помимо стандартного текста

Для NS_E_NOSOURCEGROUPS (0xC00D1B80) диагностически значимое событие — запуск сеанса Encoder с пустой коллекцией source groups. Сохраняйте границу, вернувшую этот результат, вместе с исходным callback Encoder или вызовом COM.

Почему сеанс может дойти до этой точки

Объектная модель Encoder объединяет audio, video и script inputs в IWMEncSourceGroup, связывает с группой один профиль и запрашивает у source plug-in media format для выбранных выходных потоков. В сеансе, возвращающем этот результат.

Успешное создание COM objects не доказывает полноту source group; назначение profile, обнаружение source и согласование format — более поздние контрольные точки в сеансе, возвращающем этот результат. Один конкретный способ получить это условие: ошибка загрузки.wme игнорируется, после чего Start вызывается для нового пустого объекта Encoder. Он нужно сохранить поколение объекта и числовые параметры, а не только снимок итогового диалогового окна.

Поля трассировки, имеющие диагностическую ценность

ПолеЧто сохранить
Решающие значенияSourceGroupCollection.Count, результат загрузки конфигурации и все неудачные вызовы Add
Объект, вернувший ошибкуиндекс и имя коллекции source groups, состояние active/prepared, тип потока, input scheme и имя потока, CLSID source plug-in, согласованный media type и назначенный профиль
Сопоставление с сеансомто же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен этот результат
Данные нижнего уровняпервый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с ним
Контролируемое сравнениезаведомо исправный сеанс, в котором изменяется только параметр, относящийся

Матрица решений

НаблюдениеКак это интерпретировать
Наблюдение, подтверждающее онРешающие данные: SourceGroupCollection.Count, результат загрузки конфигурации и все неудачные вызовы Add. Они подтверждают условие «запуск сеанса Encoder с пустой коллекцией source groups» в том же поколении объекта.
Наблюдение, указывающее на более ранний сбойЗафиксированные значения удовлетворяют правилу этой границы, но source, driver, COM activation или file operation раньше возвращает другой HRESULT.
Наблюдение, указывающее на более поздний сбойEncoder проходит эту границу («запуск сеанса Encoder с пустой коллекцией source groups»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе.
Проверка после исправленияПримените одно изолированное изменение: добавить как минимум одну полностью настроенную source group с источниками и profile. После этого исходный вызов должен пройти ту же контрольную точку.

Практическое влияние он ограничен переходом «source groups, streams and plug-ins», которому принадлежит условие «запуск сеанса Encoder с пустой коллекцией source groups». Сам по себе код не доказывает, что повреждены все входные данные, отсутствуют все codecs или полностью неработоспособна установка Windows Media. Сохраните первый отказавший вызов и идентичность его объекта, чтобы более поздний wrapper не скрыл данные границы «запуск сеанса Encoder с пустой коллекцией source groups».

Путь принятия решения

  1. Зафиксируйте 0xC00D1B80, он, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку.
  2. Экспортируйте текущую конфигурацию .wme или .prx конфигурацию, затем зафиксируйте SourceGroupCollection.
  3. проверяйте предварительное условие source groups, streams и plug-ins, не меняя одновременно source, profile и output sink.
  4. Выполните одно контролируемое сравнение, изменив только это условие: добавить как минимум одну полностью настроенную source group с источниками и profile.
  5. После изменения пересоздайте затронутый объект Encoder, а не предполагайте, что существующий graph автоматически отбросил прежнее ошибочное состояние при проверке «запуск сеанса Encoder с пустой коллекцией source groups».

Коды с похожими симптомами, но другими владельцами

РезультатПочему это другая граница
NS_E_NO_SCRIPT_STREAMотправка script data, когда в текущей source group отсутствует script source
NS_E_SOURCE_NOTSPECIFIEDВнесите одно изолированное изменение: добавить как минимум одну полностью настроенную source group с источниками и profile. После этого исходный вызов должен пройти ту же контрольную точку при проверке «запуск сеанса Encoder с пустой коллекцией source groups».
NS_E_NO_VALID_OUTPUT_STREAMсопоставление source media как минимум с одним output stream, объявленным в profile

Безопасное восстановление

Устраните условие-источник: добавить как минимум одну полностью настроенную source group с источниками и profile. Затем перестройте только ту часть graph Encoder, которую затрагивает он и проверьте исходный вызов.

Не удаляйте и не создавайте заново все source groups до экспорта конфигурации.wme и фиксации active group; иначе связь объектов, на которой возник сбой, будет потеряна в сеансе, который возвращает он.

Исходные материалы


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