Что означает код HRESULT 0x80040264 (VFW_E_BUFFER_UNDERFLOW)?

 
Предыдущий Следующий
VFW_E_READ_ONLY VFW_E_UNSUPPORTED_STREAM

VFW_E_BUFFER_UNDERFLOW

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

VFW_E_BUFFER_UNDERFLOW (0X80040264) относится к DirectShow filter graph. Конкретный признак: медиа-буфер не содержит достаточно данных. Смысл кода следует проверять на том объекте и generation, где он был возвращён впервые.

Это failure HRESULT; успешность следующего шага подтверждайте отдельным результатом, а не отсутствием исключения в верхнем слое. В первую очередь проверяйте конкретный stage filter graph: pin negotiation, media type, allocator, renderer, source filter или graph lifecycle. Не переносите вывод с соседнего HRESULT только потому, что у него тот же facility или общий компонент.

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

  • identify the exact graph stage described here: a buffering component cannot satisfy an operation because too little data has accumulated.
  • AllStat describes it as “The buffer is not full enough”.
  • Evidence 1 for this result: buffer fill level and target threshold.
  • How it differs from nearby results VFW_E_TIMEOUT reports an elapsed deadline, whereas it reports an insufficient current data level that may recover as data arrives.

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

  • interface/method и CLSID первого компонента, вернувшего HRESULT
  • graph state, pin names и negotiated media type
  • allocator/renderer/device state и первый preceding HRESULT

Как проверить границу

Если состояние исчезает после повторной enumeration, отдельно проверьте race между получением объекта и вызовом метода. Для состояния «медиа-буфер не содержит достаточно данных» сначала воспроизведите минимальную операцию без параллельных изменений конфигурации, затем сравните before/after evidence.

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

Исправляйте только подтверждённый prerequisite на уровне DirectShow filter graph: входной параметр, capability, object state, provider/graph topology или внешний ресурс. После изменения заново получите актуальные объекты, если их состояние могло устареть, и повторите исходный минимальный вызов.

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


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