| Предыдущий | Следующий |
| NS_E_NOTARCHIVING | NS_E_NOSOURCEGROUPS |
NS_E_INVALIDCALL_WHILE_ENCODER_STOPPED
Граница сбоя в объектной модели Encoder
Практический смысл NS_E_INVALIDCALL_WHILE_ENCODER_STOPPED (0xC00D1B7F) не сводится к стандартному сообщению: код указывает на вызов метода, допустимого только во время работы, после остановки encoder в области «последовательность состояний Encoder».
WMEncoder имеет состояния настройки, подготовки, работы, паузы, остановки и архивирования при проверке «вызов метода, допустимого только во время работы, после остановки encoder». Свойства, меняющие topology, обычно задаются до Start, а statistics и часть управляющих операций имеют смысл только в соответствующем состоянии для состояния «вызов метода, допустимого только во время работы, после остановки encoder». В сеансе, возвращающем этот результат, именно здесь проверяется условие «вызов метода, допустимого только во время работы, после остановки encoder».
Данные, отделяющие этот код от ошибки оболочки
Один и тот же method может быть допустим в одном состоянии Encoder и отклонён в другом без какого-либо дефекта file, codec или network в сеансе, возвращающем этот результат. Например, код статистики или live-control запускается по таймеру после завершения Stop. Сохраните он до того, как уровень интерфейса преобразует результат в общую ошибку запуска, захвата или профиля.
| Поле | Что сохранить |
|---|---|
| Решающие значения | RunState, запрошенный метод, время callback остановки и поколение объекта-владельца |
| Объект, вернувший ошибку | текущий Encoder RunState, активную source group, вызовы PrepareToEncode, порядок Start/Pause/Stop, состояние archive, поток и callback, инициировавшие операцию, и первый HRESULT перехода состояния |
| Сопоставление с сеансом | то же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен этот результат |
| Данные нижнего уровня | первый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с этим результатом |
| Контролируемое сравнение | заведомо исправный сеанс, в котором изменяется только настройка границы «вызов метода, допустимого только во время работы, после остановки encoder» |
Как интерпретировать следующее измерение
| Наблюдение | Как это интерпретировать |
|---|---|
| Наблюдение, подтверждающее он | Решающие данные: RunState, запрошенный метод, время callback остановки и поколение объекта-владельца. Они подтверждают условие «вызов метода, допустимого только во время работы, после остановки encoder» в том же поколении объекта. |
| Наблюдение, указывающее на более ранний сбой | Зафиксированные значения удовлетворяют правилу этой границы, но source, драйвер, COM activation или файловая операция раньше возвращает другой HRESULT. |
| Наблюдение, указывающее на более поздний сбой | Encoder проходит эту границу («вызов метода, допустимого только во время работы, после остановки encoder»), но затем codec, archive или broadcast sink завершается ошибкой на следующем этапе. |
| Проверка после исправления | Внесите одно изолированное изменение: запустить и подготовить новый сеанс до вызова runtime-операции. После этого исходный вызов должен пройти ту же контрольную точку. |
Практическое влияние он ограничен переходом «encoder state-machine sequencing», которому принадлежит условие «вызов метода, допустимого только во время работы, после остановки encoder». Сам по себе он не доказывает повреждение всех входных данных, отсутствие всех кодеков или неработоспособность всей установки Windows Media. В показательном случае, когда код статистики или live-control запускается по таймеру после завершения Stop, сохраните первый неуспешный вызов и идентификатор его объекта, чтобы более поздняя ошибка-оболочка не заменила данные о границе invalidcall while encoder stopped.
Как интерпретировать следующее измерение
- Зафиксируйте
0xC00D1B7F, он, версию Encoder и точный вызов API или обращение к свойству, вернувшее ошибку. - Экспортируйте текущую конфигурацию
.wmeили.prxконфигурацию, затем зафиксируйте RunState, запрошенный метод, время callback остановки и поколение объекта-владельца. - проверяйте предварительное условие «encoder state-machine sequencing», не меняя одновременно source, profile и output sink.
- Выполните одно контролируемое сравнение, изменив только это условие: запустить и подготовить новый сеанс до вызова runtime-операции.
- После изменения пересоздайте затронутый объект Encoder; не предполагайте, что существующий graph автоматически отбросил прежнее состояние invalidcall while encoder stopped.
Осторожно интерпретируйте соседние результаты
| Результат | Почему это другая граница |
|---|---|
NS_E_SOURCEGROUP_NOTPREPARED | Этот фрагмент описывает диагностическую границу «невозможно приостановить прямую трансляцию»; сохраните точный вход, состояние объекта и первый внутренний результат, затем измените только ответственное условие. |
NS_E_CANNOT_PAUSE_LIVEBROADCAST | невозможно приостановить прямую трансляцию |
NS_E_INVALIDCALL_WHILE_ARCHIVAL_RUNNING | попытка изменить конфигурацию archive, пока archive sink активен |
Устранение и проверка
Непосредственное исправление этого случая — запустить и подготовить новый сеанс до вызова runtime-операции. Пересоздайте соответствующий source group, profile или output object, повторите ту же операцию и убедитесь, что первый неуспешный HRESULT больше не возникает на контрольной точке invalidcall while encoder stopped.
Не скрывайте ошибку порядка безусловными повторами: запишите последовательность переходов и выполняйте операцию только в допустимом состоянии Encoder для состояния «вызов метода, допустимого только во время работы, после остановки encoder». Это позволяет повторно проверить тот же сеанс с ним без потери исходных диагностических данных.
Ссылки для границы он — граница
- WMEncoder.Start.
- Подготовка группы источников к кодированию.
- WMEncoder.Flush.
- Сохранение конфигурации Windows Media Encoder.
Нужно найти другой код? Найти другой код состояния или ошибки.
