Macos 卸载仍有实例的kext

Macos 卸载仍有实例的kext,macos,installation,driver,kernel-extension,Macos,Installation,Driver,Kernel Extension,我正在更新我的一个设备的驱动程序,并希望kextnload旧的驱动程序,kextload新的驱动程序,这样就不需要重新启动了 安装后,我尝试: sudo kextunload /System/Library/Extensions/Driver.kext 发生的错误如下所示: (内核)无法卸载kext com.driver.driver;类具有以下实例: (内核)Kext com.driver.driver类com_driver_driver_USBAudioDevice有1个实例。 未能卸载c

我正在更新我的一个设备的驱动程序,并希望kextnload旧的驱动程序,kextload新的驱动程序,这样就不需要重新启动了

安装后,我尝试:

sudo kextunload /System/Library/Extensions/Driver.kext
发生的错误如下所示:

(内核)无法卸载kext com.driver.driver;类具有以下实例: (内核)Kext com.driver.driver类com_driver_driver_USBAudioDevice有1个实例。 未能卸载com.driver.driver-(libkern/kext)kext正在使用或保留(无法卸载)

ioreg中不存在该设备。
我如何才能找到阻止我卸载驱动程序的实例?

如果调用命令kextstat,它将显示所有加载的内核扩展的列表,其中包含如下信息:-

115 3 0xFFFF7F814F4000 0x32000 0x32000 com.apple.iokit.IOAudioFamily(1.8.9fc11)

第一个数字(115)是内核扩展的id

最后,这组数字是这个特定kext引用的其他内核扩展ID

如果您将kext的id与另一个中列出的任何id匹配,那么这就是KEXTNLOAD所引用的引用


还请注意,在内核中编写任何代码时,globals变量在整个内核中都是全局的,因此如果您声明了任何可能没有唯一名称且被另一个kext使用的变量,我发现这会导致类似的问题。这里的解决方案是使用反向公司URI(例如,com_apple_globalVarName)预处理任何全局文件。

因此,我还需要卸载所有引用的内核扩展。根据我的经验,我认为您需要这样做,因为我不知道有任何其他方法来修复它。如果你犯了全局变量不唯一的错误,我建议你简单地重置机器,因为你不太可能知道是哪个kext导致了这个问题。这不是我的驱动程序,我也不能更改它。啊,我还以为这是你给它贴上的标签“MyDriver.kext”!我在帖子中改变了这一点,以消除一些混乱。很抱歉。