Что означает код HRESULT 0xC00D36F5 (MF_E_RT_WOULDBLOCK)?

 
Предыдущий Следующий
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.


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