我试图为UVC兼容的USB摄像头编写UVC扩展单元驱动程序。
我从哪里开始?
我开始基于下面链接中提供的MSDN示例进行开发。http://msdn.microsoft.com/en-us/library/ff556621%28v=vs.85%29.aspx
替换了过程中指定的所有GUID。我正在使用罗技Pro 9000 USB摄像头。使用UVCView工具获得UVC扩展guid,并分配给PROPSETID_VIDCAP_EXTENSION_UNIT。
编写了一个示例应用程序来访问这个扩展单元。
IExtensionUnit * g_pIXCcontrol;
hr = CoCreateInstance(__uuidof(IExtensionUnit), NULL, CLSCTX_INPROC_SERVER,
IID_IExtensionUnit, (void **)&g_pIXCcontrol);我面临什么问题?
CoCreateInstance返回未注册的类: 0x80040154 (REGDB_E_CLASSNOTREG)。
我已经使用uvcplgn.ax命令通过命令提示符注册了regsvr32,这反过来也会抛出成功注册的消息。但是即使在注册之后,CoCreateInstance也会抛出类未注册的错误。
这可能是什么原因?MSDN示例是否遗漏了适当注册扩展单元的内容?
提前感谢
发布于 2013-12-03 07:05:13
MSDN中提供的UVC扩展示例代码的dll相关函数和注册部分存在一些问题。我已经通过修改dll相关代码和接口接收代码暂时解决了这个问题。
现在,我能够在我的应用程序中获得完美的接口,并能够通过扩展单元与UVC USB摄像头进行通信。
感谢您对Roman R的支持。
发布于 2013-11-20 11:24:52
CoCreateInstance的第一个参数必须是COM类标识符,CLSID。__uuidof(IExtensionUnit)计算出或预期的可能性接近于零。
您应该使用CLSID_ExtensionUnit (来自该示例)。
UPD。代码段,以使代码可以使用特定的CLSID。
// Copy your CLSID of interest here in place of XXXXXXXX-YYYY-...
class __declspec(uuid("XXXXXXXX-YYYY-...")) ExtensionUnit;
CoCreateInstance(__uuidof(ExtensionUnit), ...https://stackoverflow.com/questions/20089654
复制相似问题