我正在编写一个 DriverKit dext 并且可以使用系统扩展框架激活它。我有 USB 的权利,即 com.apple.developer.driverkit设置为true com.apple.developer.driverkit.transport.usb已添加为字典但没有任何子值(它是空的)。
我期待在插入任何 USB 设备后被 dext 的 Start 方法调用,但我没有看到任何调用。
知道是否缺少任何步骤/配置吗?
我正在编写一个 DriverKit dext 并且可以使用系统扩展框架激活它。我有 USB 的权利,即 com.apple.developer.driverkit设置为true com.apple.developer.driverkit.transport.usb已添加为字典但没有任何子值(它是空的)。
我期待在插入任何 USB 设备后被 dext 的 Start 方法调用,但我没有看到任何调用。
知道是否缺少任何步骤/配置吗?
您还没有分享许多关键信息:
ioreg
或IORegistryExplorer.app
)这些是常见原因,但无论如何都要诊断问题 - 您是否查看过系统日志?具体来说,当某个 dext 导致无法加载时,通常会在日志中抱怨sysextd
。kextd
尝试这样的事情:
/Library/SystemExtensions
不应有任何 dext 残留物。(在任何以 uuid 命名的子目录中)如果是,请尝试运行sudo kextcache --invalidate /
,等到完成,然后再次重新启动。Zombie dexts 会导致重大问题。log stream --info --predicate 'process == "kextd" || process == "sysextd" || processID == 0'
(如果您也通过NSLog
/登录,您可能希望将您的应用添加到谓词os_log
)您应该在那里看到一些有用的信息。如果您无法理解它们,请随时使用您获得的日志更新您的问题。