| Предыдущий | Следующий |
| MF_E_CAPTURE_SINK_ROTATE_ERROR | MF_E_CAPTURE_ENGINE_ALL_EFFECTS_REMOVED |
MF_E_CAPTURE_ENGINE_INVALID_OP
MF_E_CAPTURE_ENGINE_INVALID_OP (0xC00DABE4) означает, что запрошенная операция механизм захвата недопустима в его текущем состоянии.
Захват в Media Foundation построен как асинхронный автомат состояний. Initialize, запуск и остановка предварительного просмотра/записи, а также TakePhoto могут принять запрос сейчас, а завершить его позже событием через IMFCaptureEngineOnEventCallback::OnEvent. Поэтому успешный возврат метода ещё не означает, что переход состояния завершён и можно немедленно запускать следующую конфликтующую операцию.
Что проверить
- Запишите последовательность
Initialize,StartPreview,StopPreview,StartRecord,StopRecordиTakePhotoвместе с соответствующими событиями механизм захвата. - Храните отдельно состояние «запрос отправлен» и «получено событие завершения». Ошибка часто возникает, когда код считает эти два момента одним состоянием.
- Проверьте повторные команды из UI, таймеров и параллельных обработчиков: две логически одинаковые команды могут попасть в механизм захвата до завершения первой.
- Не лечите HRESULT циклическим повтором того же вызова. Исправление должно менять логику переходов и разрешать следующую операцию только после документированного события завершения.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.