IFilterGraph2::AddSourceFilterForMoniker

 
Microsoft DirectShow 9.0

IFilterGraph2::AddSourceFilterForMoniker

The AddSourceFilterForMoniker method creates a source filter from an IMoniker pointer and adds the filter to the graph. For example, you can obtain a moniker for a system device, such as a video capture device, and add a video capture filter for that device. (For more information about system device monikers, see the ICreateDevEnuminterface.)

Syntax

  HRESULT AddSourceFilterForMoniker(
  IMoniker *pMoniker,
  IBindCtx *pCtx,
  LPCWSTR lpcwstrFilterName,
  IBaseFilter **ppFilter
);

Parameters

pMoniker

[in] Pointer to an IMoniker interface.

pCtx

[in] Pointer to an IBindCtx bind context interface.

lpcwstrFilterName

[in]  Name for the filter.

ppFilter

[out]  Receives a pointer to the source filter's IBaseFilter pointer. The caller must release the interface.

Return Values

Returns and HRESULT value. Possible values include the following.

Value Description
S_OK Success.
VFW_S_DUPLICATE_NAME Success; but the specified name was a duplicate, so the Filter Graph Manager modified the name.
E_FAIL Failure.
E_OUTOFMEMORY Insufficient memory.
VFW_E_DUPLICATE_NAME Failed to add a filter with a duplicate name.
VFW_E_CANNOT_LOAD_SOURCE_FILTER The source filter for could not be loaded.
VFW_E_UNKNOWN_FILE_TYPE The media type of this file is not recognized.

Remarks

The Filter Graph Manager holds a reference count on the filter until the filter is removed from the graph or the Filter Graph Manager is released.

Example Code

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

// Use IEnumMonikers to get the IMoniker pointer. (Not shown.)

// 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();

Requirements

Header: Declared in Strmif.h; include Dshow.h.

Library: Use Strmiids.lib.

See Also