Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 访问I/O目录类对象_Macos_Driver_Iokit - Fatal编程技术网

Macos 访问I/O目录类对象

Macos 访问I/O目录类对象,macos,driver,iokit,Macos,Driver,Iokit,我正在开发一个OSX内核扩展kext,它将用作I/O工具包驱动程序。然而,这个驱动程序将是严格虚拟的;它不会与任何硬件接口 OSX保留加载到内核中的所有驱动程序的目录I/O目录。它还保留一个注册表I/O注册表,其中包含已与硬件设备匹配且当前正在控制硬件的I/O目录驱动程序 由于我的驱动程序不依赖于硬件且不匹配,因此它只加载到I/O目录中,而不在I/O注册表中注册。这会导致一个问题,因为获取I/O驱动程序对象的API仅限于在I/O注册表中注册的驱动程序,并且不访问I/O目录中的对象。但是,正如我前

我正在开发一个OSX内核扩展kext,它将用作I/O工具包驱动程序。然而,这个驱动程序将是严格虚拟的;它不会与任何硬件接口

OSX保留加载到内核中的所有驱动程序的目录I/O目录。它还保留一个注册表I/O注册表,其中包含已与硬件设备匹配且当前正在控制硬件的I/O目录驱动程序

由于我的驱动程序不依赖于硬件且不匹配,因此它只加载到I/O目录中,而不在I/O注册表中注册。这会导致一个问题,因为获取I/O驱动程序对象的API仅限于在I/O注册表中注册的驱动程序,并且不访问I/O目录中的对象。但是,正如我前面提到的,我已经尝试过,这些API不公开I/O目录项

我的最终目标是获得对我的驱动程序的引用,以便。如果所有其他方法都失败,我将尝试将数据传入和传出驱动程序,但目前我对该解决方案不感兴趣

简言之:有没有办法获得对I/O目录中但不在I/O注册表中的驱动程序的引用

更新:要了解我的意思,请查看IORegistryExplorer的以下两个屏幕截图:

已注册的驱动程序很容易访问,但未注册的驱动程序将无法使用IOServiceGetMatchingServices进行匹配。。。。如何获取未注册的已加载驱动程序的引用

有关更多信息,请查看:


您可以在没有硬件的情况下加载驱动程序。你可能想研究做一些事情,比如IOResourceMatching和IOKit或IOBSD。这将导致在这些资源可用时在驱动程序上触发被动匹配。

您可以在没有硬件的情况下加载驱动程序。你可能想研究做一些事情,比如IOResourceMatching和IOKit或IOBSD。这将导致在这些资源可用时在驱动程序上触发被动匹配。

我更新了问题以响应您的答案。驱动程序加载正常,但不会在I/O注册表中注册。plist已经包含一个IOResourceMatch条目,以与IOKit完全匹配,就像Dont_Steal_Mac_OS_X驱动程序一样。我更新了问题以回应您的答案。驱动程序加载正常,但不会在I/O注册表中注册。plist已经包含一个IOResourceMatch条目,以与IOKit完全匹配,就像Dont_Steal_Mac_OS_X驱动程序一样。