1. 程式人生 > >程式中使用DirectShow技術報“COM元件建立例項失敗”

程式中使用DirectShow技術報“COM元件建立例項失敗”

問題:

最近開發的功能中,使用DirectShow技術代替舊VFW,調取高拍儀或攝像頭為了相容大部分品牌裝置。

可以同事在給客戶機器安裝產品後,執行時系統提示“IClassFactory為CLSID為{51B4ABF3-748F-4E3B-A276-C828330E926A}的COM元件建立例項失敗,原因是出現以下錯誤:80040273”

 

分析:

根據提示的CLSID到我的登錄檔找到了如下資訊:

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}]
@="Video Mixing Renderer 9"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}\InprocServer32]
@="C:\\Windows\\SysWOW64\\quartz.dll"

"ThreadingModel"="Both"

看來是使用了系統碟符下的quartz.dll檔案。

解決方法:

1.讓同事在系統碟符下找一下這個quartz.dll檔案,他說確實存在,可就是報錯。

2.我又給他發了一個dll檔案進行替換,還是有問題。

3.最後發現是他系統登錄檔沒有[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}\InprocServer32]

4.重新註冊控制元件,怎麼也寫入不了(即使使用了管理員許可權)

5.沒有辦法只能重灌系統了。

[問題持續]

2018年8月15日,該問題再次被另一個客戶反饋。根據經驗讓其重新裝一下系統,換一個版本,結果問題還依然存在。最後客戶裝系統都煩躁了。直接將問題反饋到了工程部,要求派人來給上門維修。

工程部的兄弟經過多方嘗試最後得出結論:

客戶主機板上帶的顯示卡有問題,安裝多次顯示卡驅動都裝不上。後來,安裝了一個獨立顯示卡,問題得以解決。