//...
hr = CreateFilter(CLSID_WMAsfWriter, &pASFWriter);
//...HRESULT CreateFilter(REFCLSID clsid, IBaseFilter **ppFilter)
{
    HRESULT hr;[code=C/C++]    if (!ppFilter)
        return E_POINTER;    hr = CoCreateInstance(clsid,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_IBaseFilter,
                          (void **) ppFilter);    if(FAILED(hr))
    {
        _tprintf(_T("CreateFilter: Failed to create filter!  hr=0x%x\n"), hr);
        *ppFilter = NULL;
        return hr;
    }    return S_OK;
}[/code]

解决方案 »

  1.   

    The CLSIDs are defined in Uuids.h
      

  2.   

    CLSID_WMAsfWriter 是在wmf sdk中的。你需要包含这个sdk inluce 路径。
    目前是9.5的版本。
      

  3.   

    楼上的我都做了,不管用
    1.Uuids.h中根本没这个定义(vc6.0)在vc.net2005里面有---已考证
    2.已经添加了wmf路径include和lib
    问题依然
      

  4.   

    你的directshow的include路径对不对?
    没有的话自己定义一下
    extern "C" const IID CLSID_WMAsfWriter = {0x7c23220e, 0x55bb, 0x11d3, 0x8b, 0x16, 0x0, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d};
      

  5.   

    楼上的我都做了,不管用 
    1.Uuids.h中根本没这个定义(vc6.0)在vc.net2005里面有---已考证 
    2.已经添加了wmf路径include和lib 
    问题依
    ===========调整include设置的次序一般可解决,wmf在最面试一下。
      

  6.   

    这个和DX有关系吗?
    我用的是DX9.0(2005)
    问题依然
      

  7.   

    先去掉你的ds包含路径,只包括wmf sdk.如果问题 依然,建议重装你的sdk,我觉得你好象区分不开ds sdk和wmf sdk.