| Предыдущий | Следующий |
| MF_E_RT_TOO_MANY_CLASSES | MF_E_NO_BITPUMP |
MF_E_RT_WOULDBLOCK
Что означает MF_E_RT_WOULDBLOCK
MF_E_RT_WOULDBLOCK (0xC00D36F5) — Операцию невозможно выполнить, поскольку объект принадлежит другому потоку.
Media Foundation отказалась выполнять операцию реального времени, потому что нужный объект в этот момент занят другим потоком и продолжение потребовало бы блокирующего ожидания. Это временный конфликт владения, а не постоянное отсутствие возможности.
Что проверить и как подтвердить исправление
Снимите идентификаторы потоков, идентификатор очереди выполнения, время входа/выхода обратного вызова и владельца спорного объекта. Ищите синхронные ожидания, инверсию порядка блокировок и вызовы в чужой компонент при удержании собственной блокировки — именно они превращают краткую конкуренцию в задержку всего тракта реального времени.
Не запускайте плотный цикл повторных попыток на той же очереди реального времени: он отнимает время планировщика у потока, который должен освободить объект. Исправление подтверждается неблокирующим владением и исчезновением конфликта под той же нагрузкой.
Документация для результата 0xC00D36F5: threading and work-queue recommendations · IMFRealTimeClient and priority inversion · work queue identifiers.
Нужно найти другой код? Найти другой код состояния или ошибки.