我正在使用MacOS(后来的iPadOS)的DriverKit开发USB驱动程序.驱动程序匹配、加载并能够与我的设备通信.然而,我注意到,当我拔下设备时,驱动程序进程仍在运行(如活动监视器中所示).如果我再次将其插入,则会启动第二个进程(第三个、第四个,依此类推).我实现了Stop()
方法,如下所示:
kern_return_t
IMPL(MyDriver, Stop)
{
kern_return_t ret = kIOReturnSuccess;
os_log(OS_LOG_DEFAULT, "Stopping");
ret = ivars->device->Close(this, 0);
if (ret != kIOReturnSuccess) {
os_log(OS_LOG_DEFAULT, "Error closing device: 0x%08x", ret);
}
ret = Stop(provider, SUPERDISPATCH);
if (ret != kIOReturnSuccess) {
os_log(OS_LOG_DEFAULT, "Error closing device: 0x%08x", ret);
}
os_log(OS_LOG_DEFAULT, "Stop finished.");
return ret;
}
我已经确认确实调用了Stop
方法,返回值为kIOReturnSuccess
.我的驱动程序类的free()
方法也在被调用.可能还值得注意的是,没有客户端应用程序与驱动程序通信(还没有走到那一步).
我还需要做些什么来告诉系统可以停止运行驱动程序进程吗?它不终止是正常的吗?