Поделиться через


Метод IGraphConfig::Reconfigure (strmif.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Метод Reconfigure блокирует граф фильтра и вызывает функцию обратного вызова в приложении или фильтре для выполнения динамической перенастройки.

Синтаксис

HRESULT Reconfigure(
  [in] IGraphConfigCallback *pCallback,
  [in] PVOID                pvContext,
  [in] DWORD                dwFlags,
  [in] HANDLE               hAbortEvent
);

Параметры

[in] pCallback

Указатель на интерфейс обратного вызова IGraphConfigCallback в приложении или фильтре.

[in] pvContext

Указатель на переменную типа PVOID , которая передается в подпрограмму обратного вызова.

[in] dwFlags

Определяемые приложением флаги, которые передаются в подпрограмму обратного вызова.

[in] hAbortEvent

Дескриптор события. Если вызывающий объект является фильтром, вызывающим в одном из потоков обработки данных, этот параметр должен быть дескриптором события, которое будет показано при переводе фильтра в остановленное состояние. В противном случае этот параметр может иметь значение NULL. Дополнительные сведения см. в подразделе "Примечания".

Возвращаемое значение

Возвращает S_OK в случае успешного выполнения или код ошибки в противном случае. Возможные ошибки: VFW_E_WRONG_STATE, если методу не удалось получить блокировку на графе фильтра; значение HRESULT , возвращенное подпрограммой обратного вызова; или код ошибки, указывающий на то, что графу не удалось поместить фильтры в состояние выполнения.

Комментарии

Этот метод предоставляется для того, чтобы приложение или фильтр могли реализовать специализированное построение динамических графов. Однако в большинстве случаев метод IGraphConfig::Reconnect является адекватным и должен быть предпочтительным, так как он обрабатывает большую часть сведений о реализации.

Перед вызовом этого метода при необходимости блокируйте все потоки и отправьте данные через граф (см. раздел IPinFlowControl::Block и IGraphConfig::P ushThroughData). Если метод обратного вызова завершается успешно, IGraphConfig::Reconfigure пытается привести все фильтры в состояние выполнения. (Затем вызывающий объект должен разблокировать поток данных.) В противном случае он возвращает код ошибки, возвращенный методом обратного вызова.

Если фильтр вызывает этот метод в одном из собственных потоков обработки данных, это создает потенциальную взаимоблокировку. Метод получает блокировку на графе фильтра, которая может блокировать остановку фильтра при получении вызова IMediaFilter::Stop. Чтобы избежать этой ситуации, метод принимает дескриптор объекта события, предоставленного фильтром. Фильтр должен сигнализировать о событии, если он получает вызов метода Stop .

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешности

Интерфейс IGraphConfig