我已经基于Wagerlabs代码(使用驱动程序用户客户机应用程序模型)为热插拔SCSI设备编写了设备驱动程序kext,并且一切正常。唯一剩下的担心是,驱动程序似乎没有被一致地释放,尤其是在应用程序崩溃的情况下。例如,当我尝试卸载kext时,即使在断开设备连接和关闭应用程序的情况下,仍然存在驱动程序和用户客户端的突出实例(驱动程序通常超过用户客户端)。
我已经登录了诸如之类的驱动程序功能free(),当我关闭计算机时,可以看到它们正在执行,因此这些实例显然仍可以终止。确保驱动程序实例终止并释放的“正确”方法是什么,即使主机应用程序崩溃,终止不当或通常不计划的事情?