CE6.0 摄像头驱动卸载以后再动态加载出错,请大家帮帮忙...
本帖最后由 Akili0805 于 2013-02-19 11:17:39 编辑 大家好!
我在三星2451 CE6.0系统上面动态加载摄像头驱动,现在遇到问题,请大家指教:
摄像头驱动是基于DirectShow架构的,系统加载时会第一次加载摄像头的驱动,应用程序测试摄像头预览,拍照功能都没问题。运行卸载程序,摄像头驱动被卸载,通过加打印信息CAM_Deinit,~cameraPdd 及 PIN_Deinit的函数都会执行。然后,再运行加载程序,第二次加载camera驱动,此时,CAM_Init,PIN_Iint等初始化函数也能执行,但是此时运行测试程序就会报错了,预览失败。跟踪代码在CameraPreviewThread函数里面,dwCause = WaitForSingleObject(PreviewEvent, INFINITE); 后dwCause 不等于 WAIT_OBJECT_0,然后一直死在这个线程里GetLastError()得到值为6,即句柄无效。PreviewEvent在第二次加载驱动的时候 PreviewEvent = CreateEvent(NULL, FALSE, FALSE, NULL); 返回值也是有的,IRQ_CAM_C摄像头的中断及关联也是在重新加载后重新关联了的,但为什么第二次加载后,进入线程就报错句柄无效了,导致失败的?
动态卸载和加载的程序是按照http://blog.csdn.net/norains/article/details/5316923 这个方法写的,测试过了,如看门狗驱动动态卸载再加载后就没有问题。
请问大家遇到过这样的问题过没,我该怎样解决,谢谢了! WINCE CAMERA 驱动 动态加载
[解决办法]
我遇到的是第一次通道不对才有此现象,看你的现象时图像没有数据过来,你看第2次电源开了?
[解决办法]
这个的原因是DMA中断没有应答,没数据及中断关掉了都会同样的现象。
[解决办法]
没作过卸载,但初始化时加载了不少东西,卸载后要从新加载那些才行的。
[解决办法]
应该是注册表的问题,你卸载后注册表也应该加载.