这是一个非常奇怪的问题,下面的机器信息来自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
DirectX Files标签:未发现任何问题。 显示选项卡1:未发现问题。 声音标签1:没有发现问题。 声音标签2:没有发现问题。 音乐标签:没有发现问题。 输入选项卡:未发现问题。 网络标签:未发现任何问题。
答案 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中返回并告诉我们它是什么(或自己查找)。
除了无效参数之外,这里唯一能让你失败的是该类没有注册。如果是这样,那么这是一个相当重要的事情......这不应该是可能的。