Hello, I am new to COM programming and am in need of some advice on how implement the 2 code blocks below to use a DMO Wrapper. Can someone please help me do this.

Thanks in advance.

Code:
    CComPtr<IBaseFilter> pHauppaugeWinTV885TunerDemod;
    hr = pHauppaugeWinTV885TunerDemod.CoCreateInstance(CLSID_HauppaugeWinTV885BDATunerDemod);
    CHECK_HR(hr, L"Cant create hauppage win tv 885 BDA Tuner/Demod");
    hr = pGraph->AddFilter(pHauppaugeWinTV885TunerDemod, L"Hauppauge WinTV 885 BDA Tuner/Demod");
    CHECK_HR(hr, L"Cant add hauppage wintv 885 bda tuner/demod to graph");

    CComPtr<IPin> pHap = GetPin(pHauppaugeWinTV885TunerDemod, L"Input0");
Code:
 
CComPtr<IPin> GetPin(IBaseFilter *pFilter, LPCOLESTR pinname)
{
    CComPtr<IEnumPins> pEnum;
    CComPtr<IPin>      pPin;

    HRESULT hr = pFilter->EnumPins(&pEnum);
    if (hrcheck(hr, L"Cant enumerate pins."))
    {
        return NULL;
    }

    while (pEnum->Next(1, &pPin, 0) == S_OK)
    {
        PIN_INFO pInfo;
        pPin->QueryPinInfo(&pInfo);
        BOOL found = !_wcsicmp(pinname, pInfo.achName);
        if (pInfo.pFilter)
        {
            pInfo.pFilter->Release();
        }

        if (found)
        {
            return pPin;
        }

        pPin.Release();
    }

    //printf(L"Pin not found\n");
    return NULL;
}
Using DMOs in DirectShow (Windows)
Code:
 // Create the DMO Wrapper filter.
IBaseFilter *pFilter;
HRESULT hr = CoCreateInstance(CLSID_DMOWrapperFilter, NULL, 
    CLSCTX_INPROC_SERVER, IID_IBaseFilter, 
    reinterpret_cast<void**>(&pFilter));

if (SUCCEEDED(hr)) 
{
    // Query for IDMOWrapperFilter.
    IDMOWrapperFilter *pDmoWrapper;
    hr = pFilter->QueryInterface(IID_IDMOWrapperFilter, 
        reinterpret_cast<void**>(&pDmoWrapper));

    if (SUCCEEDED(hr)) 
    {     
        // Initialize the filter.
        hr = pDmoWrapper->Init(CLSID_MyDMO, DMOCATEGORY_VIDEO_EFFECT); 
        pDmoWrapper->Release();

        if (SUCCEEDED(hr)) 
        {
            // Add the filter to the graph.
            hr = pGraph->AddFilter(pFilter, L"My DMO");
        }
    }
    pFilter->Release();
}