我试图编写一个与自定义USB设备对话的应用程序。我们编写了一个驱动程序(kext),当USB设备连接到计算机时会自动加载该驱动程序。它在安装过程中安装到适当的位置(/ System / Library / Extensions& / Library / Extensions)。
在我的应用程序(.app)中,我需要能够确认此kext已安装并且可以在用户的计算机上加载。
我最初的想法是使用"系统"命令并获得" kextstat |的结果grep mykext"。但是,kextstat仅显示已加载的内核扩展。 (可以在用户连接USB设备之前启动应用程序)。
我唯一能想到的是使用" kextfind | grep mykext"但是,为了确定kext是否存在,我不知道它是否可加载。 (即它可能存在,但有人与plist文件混淆,现在签名失败,所以它不会被加载)
我知道它是可能的,因为Apple的System Profiler能够列出所有扩展,如果它们已加载,并且它们是可加载的。
答案 0 :(得分:2)
来自kextutil手册页:
kextutil默认打印有关kexts的诊断信息,但某些选项会导致某些测试被跳过。要确保执行所有测试,请使用-print-diagnostics(-t)选项。 -print-diagnostics选项通常在加载失败后使用-no-load(-n)来查明问题。但是,它可以与任何其他选项一起使用。
注意:当使用-no-load(-n)选项时,则不需要sudo(root用户)。