Что означает код HRESULT 0x80040294 (VFW_E_PIN_ALREADY_BLOCKED)?

 
Предыдущий Следующий
VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD VFW_E_CERTIFICATION_FAILURE

VFW_E_PIN_ALREADY_BLOCKED

Практический смысл

VFW_E_PIN_ALREADY_BLOCKED (0X80040294) относится к DirectShow. Это failure HRESULT. Исходный признак результата зафиксирован в документации как IPinFlowControl::Block() has been called on another thread. The current thread cannot make any assumptions about this pin's block state.

Этот результат нужно связывать с первым нативным возвратом и фактическим состоянием объекта; соседний HRESULT того же facility не доказывает ту же причину. Для этой страницы ключевая граница формулируется так: IPinFlowControl::Block finds that another thread has already established the pin block, so the current thread cannot assume or replace that state.

Специфичные признаки исходного описания

  • AllStat: “IPinFlowControl::Block() has been called on another thread. The current thread cannot make any assumptions about this pin's block state”.
  • IPinFlowControl::Block finds that another thread has already established the pin block, so the current thread cannot assume or replace that state.
  • Cause 1 for this result: two reconfiguration controllers race for the same pin.
  • Cause 2 for this result: stop and dynamic reconnect paths use separate locks.
  • Cause 3 for this result: the owning thread is delayed or abandoned without cleanup.
  • Action 1 for this result: serialize topology changes through one coordinator.

Что сохранить до исправления

  • interface и method, на котором впервые появился HRESULT
  • CLSID и friendly name задействованных filters, pin names и negotiated media type
  • graph state/generation, renderer или capture device и первый предшествующий HRESULT
  • временные метки media sample, rate/clock state и фактические параметры вызова

Как локализовать границу

Проверяйте filter graph, negotiated media type, timing и состояние конкретного interface, а не наличие codec вообще. Сначала воспроизведите минимальный сценарий без параллельного изменения конфигурации; затем сравните сохранённые параметры с условием из исходного описания. Если состояние исчезает после re-enumeration или пересоздания объекта, отдельно проверьте lifetime/generation race.

Исправление и повторная проверка

Критерий восстановления — исходный вызов проходит на тех же релевантных данных после конкретного подтверждённого изменения, а не заменяется соседним кодом.

Дополнительные признаки конкретного сценария

  • Cause 2 for this result: stop and dynamic reconnect paths use separate locks.
  • Cause 1 for this result: two reconfiguration controllers race for the same pin.
  • Evidence 2 for this result: block event handle and operation correlation IDs.

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


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