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


Метод IFilterGraph2::AddSourceFilterForMoniker (strmif.h)

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

Метод AddSourceFilterForMoniker создает исходный фильтр из указателя IMoniker и добавляет фильтр в граф. Например, можно получить моникер для системного устройства, например устройства захвата видео, и добавить фильтр захвата видео для этого устройства. (Дополнительные сведения о моникерах системных устройств см. в интерфейсе ICreateDevEnum .)

Синтаксис

HRESULT AddSourceFilterForMoniker(
  [in]  IMoniker    *pMoniker,
  [in]  IBindCtx    *pCtx,
  [in]  LPCWSTR     lpcwstrFilterName,
  [out] IBaseFilter **ppFilter
);

Параметры

[in] pMoniker

Указатель на интерфейс IMoniker .

[in] pCtx

Указатель на интерфейс контекста привязки IBindCtx .

[in] lpcwstrFilterName

Имя фильтра.

[out] ppFilter

Получает указатель на указатель IBaseFilt исходного фильтра. Вызывающий объект должен освободить интерфейс .

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

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

Код возврата Описание
S_OK
Успешно.
VFW_S_DUPLICATE_NAME
Успех; но указанное имя было дубликатом, поэтому диспетчер графов фильтров изменил имя.
E_FAIL
Ошибка.
E_OUTOFMEMORY
Недостаточно памяти.
VFW_E_DUPLICATE_NAME
Не удалось добавить фильтр с повторяющимся именем.
VFW_E_CANNOT_LOAD_SOURCE_FILTER
Не удалось загрузить исходный фильтр для .
VFW_E_UNKNOWN_FILE_TYPE
Тип носителя этого файла не распознается.

Комментарии

Диспетчер графов фильтров содержит количество ссылок на фильтр, пока фильтр не будет удален из графа или не будет освобожден диспетчер графа фильтров.

Примеры

C++
IBaseFilter *pSource = NULL; IMoniker *pMoniker = NULL;

Используйте IEnumMonikers, чтобы получить указатель IMoniker. (Не показано.)

// Create a bind context for working with the moniker. IBindCtx pContext=0; hr = CreateBindCtx(0, &pContext); if (SUCCEEDED(hr)) { // Query the Filter Graph Manager for IFilterGraph2. IFilterGraph2 pFG2 = NULL; hr = pGraph->QueryInterface(IID_IFilterGraph2, (void)&pFG2); if (SUCCEEDED(hr)) { // Create the source filter. hr = pFG2->AddSourceFilterForMoniker(pMoniker, pContext, L"Source", &pSource); pFG2->Release(); } pContext->Release(); } pMoniker->Release();

Требования

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

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

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

Интерфейс IFilterGraph2