为什么创建CLSID_CaptureGraphBuilder2实例总是在一台机器中失败

时间:2010-04-27 14:21:46

标签: windows winapi interface directx directshow

这是一个非常奇怪的问题,下面的机器信息来自DXDiag。报告没有错误,但创建CLSID_CaptureGraphBuilder2实例始终在计算机中失败。可以创建CLSID_FilterGraph。在创建CLSID_CaptureGraphBuilder2之前,我调用了CoInitialize并创建了CLSID_FilterGraph。只有这台机器有错误,与此界面相关的dll或之前需要调用的任何功能才能使其工作?提前谢谢。


系统信息

本报告时间:2010年4月24日,09:46:58        机器名称:TURION    操作系统:Windows XP Home Edition(5.1,Build 2600)Service Pack 3(2600.xpsp_sp3_qfe.100216-1510)            语言:日语(区域环境:日语) 系统制造商:由O.E.M.填写        系统型号:MS-7145                BIOS:默认系统BIOS           处理器:AMD Turion(tm)64移动技术MT-30,MMX,3DNow,~1.6GHz              内存:768MB RAM           页面文件:使用376MB,可用1401MB         Windows目录:C:\ WINDOWS     DirectX版本:DirectX 9.0c(4.09.0000.0904) DX设置参数:未找到      DxDiag版本:5.03.2600.5512 32位Unicode


DxDiag Notes

DirectX Files标签:未发现任何问题。       显示选项卡1:未发现问题。         声音标签1:没有发现问题。         声音标签2:没有发现问题。           音乐标签:没有发现问题。           输入选项卡:未发现问题。         网络标签:未发现任何问题。

1 个答案:

答案 0 :(得分:0)

不要将CoCreateInstance称为CLSID_FilterGraph ..这没有意义。 CoCreateInstance CLSID_CreateCaptureGraph2并发布您在CoCreateInstance中使用的代码以及您返回的任何HRESULT值。

以下代码“应该”有效:

ICaptureGraphBuilder2* pCapture = NULL;
HRESULT hr = CoCreateInstance( CLSID_CaptureGraphBuilder, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**) &pCapture) ;

如果它没有查找HRESULT在hr中返回并告诉我们它是什么(或自己查找)。

除了无效参数之外,这里唯一能让你失败的是该类没有注册。如果是这样,那么这是一个相当重要的事情......这不应该是可能的。