如何查看自己程序中正在运行的Graph?

在帮助文档中可以找到两个有关这个问题的函数AddToRot和RemoveFromRot。具体函数抄录如下:

HRESULT AddToRot(IUnknown *pUnkGraph, DWORD *pdwRegister) 
{
    IMoniker * pMoniker;
    IRunningObjectTable *pROT;
    if (FAILED(GetRunningObjectTable(0, &pROT))) {
        return E_FAIL;
    }
    WCHAR wsz[256];
    wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId());
    HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);
    if (SUCCEEDED(hr)) {
        hr = pROT->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE, pUnkGraph,
            pMoniker, pdwRegister);
        pMoniker->Release();
    }
    pROT->Release();
    return hr;
}
void RemoveFromRot(DWORD pdwRegister)
{
    IRunningObjectTable *pROT;
    if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {
        pROT->Revoke(pdwRegister);
        pROT->Release();
    }
}
在创建完成你的Filter Graph之后,执行AddToRot函数,就可以用例如GraphEdit等工具看到你的
Graph了,在工具中显示的与你的程序中Graph的状态是一样的,这样就能知道自己的Graph是否正确
建立了。很方便吧?

你可能感兴趣的:(filter,Graph,文档,工具)