| Предыдущий | Следующий |
| MF_E_NO_EVENTS_AVAILABLE | MF_E_END_OF_STREAM |
MF_E_INVALID_STATE_TRANSITION
Что означает MF_E_INVALID_STATE_TRANSITION
MF_E_INVALID_STATE_TRANSITION (0xC00D3E82) — Медиаисточник не может перейти из остановленного состояния в состояние паузы.
Media Foundation использует асинхронные автоматы состояний для источников и других компонентов. Документированный пример — IMFMediaSource::Pause: пауза допустима только для уже запущенного источника; вызов из остановленного или уже приостановленного состояния возвращает этот HRESULT. Поэтому состояние интерфейса приложения может опережать или отставать от фактического состояния объекта.
Что проверить и как подтвердить исправление
Запишите последовательность команд Start, Pause, Stop и соответствующих событий Media Foundation с идентификатором конкретного источника. Следующую команду перехода отправляйте только после события, подтверждающего завершение предыдущей асинхронной операции, если этого требует используемый объект.
Для собственного медиаисточника отдельно проверьте реализацию таблицы переходов: Microsoft требует разрешать Pause только для запущенного источника. Не пытайтесь исправлять этот HRESULT повторением команды в цикле; если текущее состояние известно точно, нужно изменить последовательность переходов или дождаться завершения уже начатого перехода.
Документация для результата 0xC00D3E82: IMFMediaSource::Pause · Writing a Custom Media Source.
Нужно найти другой код? Найти другой код состояния или ошибки.
