我正在开发一个DirectShow CSource捕获过滤器。 它工作正常,但是当我关闭正在使用的过滤器程序(在这种情况下,我用VLC进行测试,但与其他软件发生同样的情况),程序崩溃(如果我在Visual Studio调试它,然后一断点被触发)。
我一直在追捕这个问题了一段时间,发现这两个,我的源过滤器和我的源流没有被释放; 这是,它们的引用计数器1在程序的结尾,DllCanUnloadNow()函数报告有2米的物体仍然在使用,并且,被调用CoUninitialize()时,该程序崩溃。
我敢肯定的是,引用计数被正确地处理,因为我使用的基类的实现。 在我的软件中唯一不寻常的事情,我能想到的是,我用我自己的DllGetClassObject()的版本:我配置了DEF文件有MyDllGetClassObject()出口替代的DllGetClassObject(),所以我可以插入之前的一些代码调用默认的实现。 我不认为这是一个问题,因为我已经检查了我的)MyDllGetClassObject结束(返回所有对象的引用计数为1。
我想我失去了一些东西对过滤器的整个生命周期,但无法弄清楚什么(这是第一个捕获筛选我正在开发)。 任何建议?
先感谢您,
吉列尔莫