我在graph edit中设置调试好了某种方式,可是实际编写的时候,
我ceateinstance   fiter实例时候,如何才能知道该filter的IID_XXX,而且有些在graph  edit中可以看见的filter,可是查help帮助,却没看见这个filger,如何解决。。???

解决方案 »

  1.   

    #define     REGISTER_FILTERGRAPH
    #ifdef REGISTER_FILTERGRAPHHRESULT AddGraphToRot(IUnknown *pUnkGraph, DWORD *pdwRegister) 
    {
        IMoniker * pMoniker;
        IRunningObjectTable *pROT;
        TCHAR wsz[128];
        HRESULT hr;    if (FAILED(GetRunningObjectTable(0, &pROT))) {
            return E_FAIL;
        }    swprintf(wsz,TEXT("FilterGraph %08x pid %08x"), (DWORD_PTR)pUnkGraph, 
                  GetCurrentProcessId());    hr = CreateItemMoniker(TEXT("!"), wsz, &pMoniker);
        if (SUCCEEDED(hr)) {
            hr = pROT->Register(0, pUnkGraph, pMoniker, pdwRegister);
            pMoniker->Release();
        }
        pROT->Release();
        return hr;
    }
    void RemoveGraphFromRot(DWORD pdwRegister)
    {
        IRunningObjectTable *pROT;    if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {
            pROT->Revoke(pdwRegister);
            pROT->Release();
        }
    }
      

  2.   

    #ifdef REGISTER_FILTERGRAPH
        hr = AddGraphToRot(pGBuilder, &g_dwGraphRegister);
        if (FAILED(hr))
        {
            Msg(TEXT("Failed to register filter graph with ROT!  hr=0x%x"), hr);
            g_dwGraphRegister = 0;
        }
    #endif