Что означает код HRESULT 0xC00D1B74 (NS_E_INVALIDCALL_WHILE_ARCHIVAL_RUNNING)?

 
Предыдущий Следующий
NS_E_NO_SCRIPT_STREAM NS_E_INVALIDPACKETSIZE

NS_E_INVALIDCALL_WHILE_ARCHIVAL_RUNNING

Где Encoder возвращает этот результат

0xC00D1B74 (NS_E_INVALIDCALL_WHILE_ARCHIVAL_RUNNING) диагностически значимое событие — попытка изменить конфигурацию архива при активном archive sink. Сохраняйте границу, вернувшую этот результат, вместе с исходным callback Encoder или вызовом COM.

WMEncoder имеет состояния настройки, подготовки, работы, паузы, остановки и архивирования. Свойства, меняющие topology, обычно задаются до Start, а statistics и часть управляющих операций имеют смысл только в соответствующем состоянии для состояния «попытка изменить конфигурацию архива при активном archive sink». В сеансе, возвращающем этот результат, именно здесь проверяется условие «попытка изменить конфигурацию архива при активном archive sink».

Что уже успешно выполнено

Один и тот же method может быть допустим в одном состоянии Encoder и отклонён в другом без какого-либо дефекта file, codec или network в сеансе, возвращающем этот результат. В показательном случае invalidcall while archival running код ротации изменяет LocalFileName до завершения текущего сегмента архива. Он следует проверять на объекте, сформировавшем ошибку, а не считать общим сбоем кодека или операционной системы.

Снимок состояния, который нужно сохранить

ПолеЧто сохранить
Решающие значениясостояние архива, имя метода или свойства, выходной файл и callback, выполнивший изменение
Объект, вернувший ошибкутекущий Encoder RunState, активную source group, вызовы PrepareToEncode, порядок Start/Pause/Stop, состояние archive, поток и callback, инициировавшие операцию, и первый HRESULT перехода состояния
Сопоставление с сеансомто же поколение source group, индекс audience, идентичность объекта и последовательность callbacks, в которой был получен этот результат
Данные нижнего уровняпервый HRESULT COM, драйвера, файловой системы или codec, полученный до того, как Encoder сопоставил условие с ним
Контролируемое сравнениезаведомо исправный сеанс, в котором изменяется только настройка границы «попытка изменить конфигурацию архива при активном archive sink»

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

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

Практическое влияние он ограничено переходом «последовательность состояний Encoder», которому принадлежит условие «попытка изменить конфигурацию архива при активном archive sink». Сам по себе он не доказывает, что повреждены все входные данные, отсутствуют все codecs или полностью неработоспособна установка Windows Media. В типичном случае, когда код ротации изменяет LocalFileName до завершения текущего сегмента архива, сохраните первый отказавший вызов и идентичность его объекта, чтобы более поздняя оболочка не скрыла исходные данные.

Исправление на нужном уровне

Исправьте только непосредственную причину: корректно остановить архив перед изменением его назначения или режима. Затем пересоздайте затронутый объект или часть graph Encoder, повторите ту же операцию и убедитесь, что первый отказавший HRESULT больше не возникает на этой границе при проверке он.

Не скрывайте ошибку порядка безусловными повторами: запишите последовательность переходов и выполняйте операцию только в допустимом состоянии Encoder. Это позволяет повторно проверить тот же сеанс с ним без потери исходных диагностических данных.

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


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