| Предыдущий | Следующий |
| NS_E_ARCHIVE_FILENAME_NOTSET | NS_E_PROFILE_MISMATCH |
NS_E_SOURCEGROUP_NOTPREPARED
Диагностический смысл помимо стандартного текста
Для NS_E_SOURCEGROUP_NOTPREPARED (0xC00D1B7A) диагностически значимое событие — Этот фрагмент описывает диагностическую границу «невозможно приостановить прямую трансляцию»; сохраните точный вход, состояние объекта и первый внутренний результат, затем измените только ответственное условие.. Сохраняйте границу, вернувшую этот результат, вместе с исходным обратный вызов Encoder или вызовом COM.
Почему сеанс может дойти до этой точки
WMEncoder предоставляет состояния конфигурации, подготовки, работы, паузы, остановки и архивирования в сеансе, который возвращает этот результат. Свойства, меняющие топологию графа, обычно задаются до Start, тогда как статистика и некоторые операции управления имеют смысл только после достижения сеансом соответствующего состояния.
Один и тот же метод может быть допустим в одном состоянии Encoder и отклонён в другом без какого-либо дефекта файла, кодека или сети в сеансе, возвращающем этот результат. Один конкретный способ получить это условие: код игнорирует неудачный вызов PrepareToEncode и сразу вызывает Start. Он нужно сохранить поколение объекта и числовые параметры, а не только снимок итогового диалогового окна.
Поля трассировки, имеющие диагностическую ценность
| Поле | Что сохранить |
|---|---|
| Решающие значения | идентификатор группы источников, результат PrepareToEncode, назначение профиля и состояние обнаружения формата источника |
| Объект, вернувший ошибку | текущий Encoder RunState, активную группу источников, вызовы PrepareToEncode, порядок запуска/паузы/остановки, состояние архива, поток и обратный вызов, инициировавшие операцию, и первый HRESULT перехода состояния |
| Сопоставление с сеансом | то же поколение группы источников, индекс аудитории, идентификатор объекта и последовательность обратных вызовов, в которой был получен этот результат |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или кодека, зарегистрированный до того, как Encoder сопоставил условие с ним |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только параметр, относящийся |
Матрица решений
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее он | Решающие данные: идентификатор группы источников, результат PrepareToEncode, назначение профиля и состояние обнаружения формата источника. Они подтверждают условие «попытка активировать или запустить группу источников до успешного завершения PrepareToEncode» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но источник, драйвер, активация COM или операция с файлом раньше возвращает другой HRESULT. |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («попытка активировать или запустить группу источников до успешного завершения PrepareToEncode»), но затем кодек, архива или приёмника широковещательной передачи завершается ошибкой на следующем этапе. |
| Проверка после исправления | Примените одно изолированное изменение: устраните более раннюю ошибку подготовки и подготовьте ту же группу до её активации. После этого исходный вызов должен пройти ту же контрольную точку для состояния «попытка активировать или запустить группу источников до успешного завершения PrepareToEncode». |
Практическое влияние он ограничено этапом, которому принадлежит условие «попытка активировать или запустить группу источников до успешного завершения PrepareToEncode». Сам по себе код не доказывает, что повреждены все входные данные, отсутствуют все кодеки или полностью неработоспособна установка Windows Media. Типичный сценарий: код игнорирует неудачный вызов PrepareToEncode и сразу вызывает Start. Сохраните первый вызов, завершившийся ошибкой, и идентификатор соответствующего объекта, чтобы последующая ошибка интерфейса не скрыла данные о границе «попытка активировать или запустить группу источников до успешного завершения PrepareToEncode».
Путь принятия решения
- Зафиксируйте
0xC00D1B7A, он, версию Encoder и точный вызов API или обращение к свойству, вернувшее он. - Экспортируйте текущую конфигурацию
.wmeили.prx, затем зафиксируйте идентификатор группы источников, результат PrepareToEncode, назначение профиля и состояние обнаружения формата источника. - Проверяйте предусловие последовательности конечный автомат Encoder, не меняя одновременно источник, профиль и выходной приёмник.
- Выполните одно контролируемое сравнение, изменив только это условие: устраните более раннюю ошибку подготовки и подготовьте ту же группу до её активации.
- После изменения пересоздайте затронутый объект Encoder, а не предполагайте, что существующий граф автоматически отбросил прежнее ошибочное состояние.
Коды с похожими симптомами, но другими владельцами
| Результат | Почему это другая граница |
|---|---|
NS_E_INVALIDCALL_WHILE_ARCHIVAL_RUNNING | попытка изменить конфигурацию архива, пока архивный приёмник активен |
NS_E_INVALIDCALL_WHILE_ENCODER_STOPPED | вызов метода, допустимого только во время работы, после остановки Encoder |
NS_E_NO_ACTIVE_SOURCEGROUP | Он относится к операции, для которой должна быть выбрана активная группа источников; сохраните точный вход, состояние объекта и первый внутренний результат, затем измените только ответственное условие. |
Безопасное восстановление
Устраните условие-источник: устраните более раннюю ошибку подготовки и подготовьте ту же группу до её активации. Затем перестройте только ту часть граф Encoder, которую затрагивает он и проверьте исходный вызов.
Не скрывайте проблему порядка безусловными повторами; запишите последовательность переходов и выполняйте операцию в документированной точке жизненный цикл сеанса, который возвращает он.
Исходные материалы
- WMEncoder.Start.
- Подготовка группы источников к кодированию.
- WMEncoder.Flush.
- Сохранение конфигурации Windows Media Encoder.
Нужно найти другой код? Найти другой код состояния или ошибки.
