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


Метод IPinConnection::NotifyEndOfStream (strmif.h)

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

Метод NotifyEndOfStream запрашивает уведомление от пин-кода при следующем условии окончания потока.

Синтаксис

HRESULT NotifyEndOfStream(
  [in] HANDLE hNotifyEvent
);

Параметры

[in] hNotifyEvent

Дескриптор объекта события, о чем сигнализирует закрепление.

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

Возвращает значение HRESULT . Ниже приведены возможные значения.

Код возврата Описание
S_FALSE
Дескриптор события имеет значение NULL, но дескриптор событий для сброса не существует.
S_OK
Задан дескриптор события. (Если дескриптор события имеет значение NULL, уведомление о событии было отменено.)

Комментарии

Этот метод позволяет вызывающей стороны отправлять данные через часть графа фильтра, заканчивающуюся этим закреплением.

Например, предположим, что вызывающий объект отправляет данные из выходного контакта "A" в одном фильтре во входной контакт "B" в другом фильтре, возможно, с промежуточными фильтрами. Произойдет следующая последовательность событий.

  1. Вызывающий объект блокирует поток данных при закреплении A.
  2. Он вызывает NotifyEndOfStream на закреплении B.
  3. Он вызывает IPin::EndOfStream в контакте ввода, подключенном к закреплению A.
  4. По мере того как оставшиеся данные передаются ниже по всем промежуточным фильтрам, эти фильтры распространяют уведомление об окончании потока.
  5. Когда закрепление B получает уведомление об окончании потока, оно сообщает о событии, заданном в параметре hNotifyEvent . На этом этапе вызывающий объект может безопасно перенастроить граф между закреплением A и закреплением B.
Поскольку этот метод предназначен для того, чтобы позволить вызывающей объекту динамически перестраивать граф, а затем перезапустить подключение, уведомление о завершении потока не представляет фактический конец потока. Таким образом, закрепление B не распространяет условие окончания потока или сигнал EC_COMPLETE. Это исключение из обычных правил для потока данных в графе фильтров.

Вызывающий объект отвечает за отмену уведомления путем повторного вызова этого метода с дескриптором события NULL .

Граф фильтра вызывает этот метод внутри метода IGraphConfig::Reconnect . Если приложение или фильтр выполняет какую-либо специализированную динамическую перенастройку графа (с помощью метода IGraphConfig::Reconfigure ), он может сначала вызвать этот метод для отправки данных через ту часть графа, которая перенастраивалась.

Требования

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

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

Динамическое повторное подключение

Коды ошибок и успешного выполнения

Интерфейс IPinConnection