你说的手动调用卸载函数是什么意思?驱动是不需要你手动调用卸载函数的。应该是处理USB的PnP事件就可以了。 你可以尝试一下在WinDBG里面看看,拔出之后,驱动的实例在DriverStack中还有没有,如果还有,那么就是没有从内存中卸载干净,要看看你的移除事件处理。 如果没有,那么可以在打开设备的时候打个断点,看能否跟踪到。 因为你只是一个过滤驱动,没有功能实现,不会这么复杂。
你的是USB键盘吧? 应用程序打开的时候的句柄使用的是什么?初步估计是你的上层程序在拔出设备后,没有关闭原来的句柄,导致原来的句柄没有被正确的释放导致。 另外,没有看到你的设计,我不知道你在哪里做的删除动作,是在OnSupriseRemove里面吗?从你的感觉描述来看,是把驱动做了常驻内存,如果常驻了,要特别注意这块的问题。
21,616
社区成员
21,711
社区内容
加载中
试试用AI创作助手写篇文章吧