Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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

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
C++ IOKit驱动程序已加载但未启动_C++_Macos_Iokit_Kernel Extension_Xnu - Fatal编程技术网

C++ IOKit驱动程序已加载但未启动

C++ IOKit驱动程序已加载但未启动,c++,macos,iokit,kernel-extension,xnu,C++,Macos,Iokit,Kernel Extension,Xnu,我有一个IOKit基本驱动程序,它是非硬件触发的,并且是从IOResources派生的。它还使用IOServiceOpen提供给用户空间客户端类,但我认为这与我的问题无关。。。主驱动程序具有IOKit依赖项,如派生驱动程序Info.plist文件中所述: <key>OSBundleLibraries</key> <dict> ... .. . <key>com.derived.driver</key>

我有一个IOKit基本驱动程序,它是非硬件触发的,并且是从IOResources派生的。它还使用
IOServiceOpen
提供给用户空间客户端类,但我认为这与我的问题无关。。。主驱动程序具有IOKit依赖项,如派生驱动程序Info.plist文件中所述:

<key>OSBundleLibraries</key>
<dict>
    ...
    ..
    .
    <key>com.derived.driver</key>
    <string>1.0.0</string>
</dict> 
编辑: 事实上我做到了,并且成功了(所有实例都已根据ioreg初始化)

+-o com\u派生的驱动程序
+-o com_基本驱动程序
但我真的不知道为什么,任何解释都将不胜感激


谢谢

我只能猜测一下,因为您还没有提供完整的信息——特别是,您还没有提供两位驾驶员的完整IOKit个性词典

请注意,正常情况下,只有一个服务将成功匹配
IOService
以成为其客户机。如果您希望匹配多个不同类型的客户端,则需要通过个性词典中的
IOMatchCategory
键定义不同的匹配类别。许多驱动程序需要特别匹配
IOResources
,因此。我怀疑这就是你一直错过的


最后,关于默认版本内核的问题,请注意:内核调试工具包(KDK)提供了备用的开发和调试内核,这些内核是使用远没有那么激进的优化设置编译的。您可能会发现它们很有用-查看KDK的自述文档,了解如何启用它们的详细信息。

是的,这正是我所需要的,在
IOMatchCategory
上设置不同的值后,对于每个驱动程序,它们都加载了
IOResources
提供的相应类。谢谢
<key>IOKitPersonalities</key>
<dict>
        <key>myDriver</key>
        <dict>
                <key>CFBundleIdentifier</key>
                <string>com.base.driver</string>
                <key>IOClass</key>
                <string>com_base_driver</string>
                <key>IOProviderClass</key>
                <string>com_derived_driver</string>
  +-o com_derived_driver  <class com_derived_driver, id 0x10000091f, registered, matched, active, busy 0 (804415 ms), retain 6>
    +-o com_base_driver  <class com_base_mng, id 0x100000920, registered, matched, active, busy 0 (0 ms), retain 9>