macos - 苹果电脑 : load Mass Storage Driver Kext for testing

标签 macos driver device-driver iokit kernel-extension

我正在为 Mac 编写一个定制的大容量存储内核扩展,它是 IOSCSIPeripheralDeviceType05 逻辑单元驱动程序的子类。我已经编译了一个 .kext 文件,它通过了 kextutil -n -t ...,但我无法加载它进行测试。

我在 .plist 中有一个非零的 IOKitDebug 字段,GetDeviceConfiguration 如下所示:

IOReturn
com_MyCompany_driver_MyDriver::GetDeviceConfiguration( void )
{
    IOLog( "MyDriver overriding GetConfiguration\n" );

    return super::GetDeviceConfiguration();
}

但是,当我将其复制到 /System/Library/Extensions/ 并使用 kextutil/System/Library/Extension/MyDriver.kext 执行它时,什么也没有发生,并且/var/log/system.log 中没有显示任何内容。

如何加载此 .kext 以便能够对其进行调试?

最佳答案

首先,在开发扩展时不要将扩展放入/SLE 中。这是自找麻烦,因为它可能会导致扩展自动加载。这可能会导致系统无法启动。只需复制到,例如/tmp/ 并使用 kextutil 从那里加载它。

其次,将一些调试输出放入 com_MyCompany_driver_MyDriver::init() 中,因为这是第一个被调用的东西。

第三,您的问题可能是设备匹配。如果在加载您的驱动程序时该设备已与现有驱动程序匹配,则不会考虑您的设备。如果您无法热插拔设备并且无法在加载驱动程序之前卸载现有驱动程序,那么您可能需要在 SLE 中安装 kext,以便在启动时加载。如果您仍然遇到匹配问题,请发布您尝试匹配的设备的一些详细信息(ioreg/IORegistryExplorer 输出)以及 info.plist 中的匹配字典。

关于macos - 苹果电脑 : load Mass Storage Driver Kext for testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220828/

相关文章:

windows-7 - dpinst/DifX 不会静默安装签名驱动程序

linux - 如何实现鼠标驱动 Linux USB鼠标驱动?

c++ - 在/usr/bin 中删除并复制回来后出现 Clang 错误

html - epub 和 iBooks 中的交互

mysql - Jython 连接到 mysql,找不到驱动程序错误

c - 键盘中断处理的 Linux 设备驱动程序错误

android - Android 的 Postscript 驱动程序?

windows - NtQueryInformationProcess 的替代方法来获取命令行

assembly - 在 Mac OS X 上编辑程序集

c++ - 在 C++ 中使用智能卡在 Mac 上签名数据