一般电脑都支持两个usb摄像头,当插入超过3个usb摄像头,IMediaControl::Run()出错,也就是第3个摄像头不能工作。
但很神奇的是,拔下全部拔下摄像头,再依次插上去,却只能运作一个,无端端不能工作另外一个,令我很是恼火。
后来才发现异常使得代码返回,pSrcFilter没有得到释放所导致的。
CComPtr<IBaseFilter> pSrcFilter;
保证了这个filter在该函数结束后得到释放。上述错误解决了。
智能指针在处理异常现象比较多的地方很好用!