【问题标题】:Device Driver created with Xcode won't load使用 Xcode 创建的设备驱动程序不会加载
【发布时间】:2011-10-17 11:13:43
【问题描述】:

我已经基于这个链接http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIOKit/iokit_tutorial.html实现了一个设备驱动应用程序

如果我尝试在终端上加载设备($ sudo cp -R MyDriver.kext /tmp),我会收到错误:

No kernel file specified; using running kernel for linking.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext is invalid; can't resolve dependencies.
MyDriver.kext has problems:
Validation Failures: 
    Info dictionary property value is of illegal type: 
        IOKitPersonalities->MyDriver->IOKitDebug

Authentication Failures:             File owner/permissions are incorrect (must be root:wheel, nonwritable by group/other): 
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/MacOS/MyDriver
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj
        /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Resources/en.lproj/InfoPlist.strings        
Warnings: 
    Personality has no CFBundleIdentifier; the kext's identifier will be inserted when sending to the IOCatalogue: 
        MyDriver    

我的疑问是: 1)什么是没有指定内核文件错误(我的应用程序错过了什么)? 2)什么是MyDriver.kext 无效;无法解决依赖关系? 3) 我的包标识符是:
CFBundle标识符 com.MyCompany.driver.${PRODUCT_NAME:maanu}

          what is Info dictionary property value is of illegal type: 

          IOKitPersonalities->MyDriver->IOKitDebug?

          (MyDriver My application Name.)

非常感谢您的回复。

                Muhammed Musthafa

【问题讨论】:

    标签: xcode4 device-driver iokit kernel-extension


    【解决方案1】:

    第一个内核依赖项。
    这在您的驱动程序的 info.plist 中指定。 这里 info.plist 的路径似乎是 /Users/Rasheed/Library/Developer/Xcode/DerivedData/MyDriver-gdmnlqdybpdwzyanoeludcalqwba/Build/Products/Debug/MyDriver.kext/Contents/Info.plist

    以下是info.plist中AppleHIDKeyboard.kext的内核依赖
    (key)OSBundleLibraries (字典)
    (key)com.apple.iokit.IOHIDFamily(/key)
    (字符串)1.4(/字符串)
    (key)com.apple.kpi.iokit(/key)
    (string)10.0.0d2(/string)
    (key)com.apple.kpi.libkern(/key)
    (string)10.0.0d2(/string)
    (/dict)

    第二次身份验证失败:
    您可以通过以下步骤部署驱动程序来解决此问题。
    1.将 MyDriver.kext 放在您的桌面上。
    2.打开 Terminal 应用程序并输入下面的命令列表。
    3.sudo chown -R root:wheel ~/Desktop/MyDriver.kext
    4.sudo chmod -R 755 ~/Desktop/MyDriver.kext
    5.mv -f ~/Desktop/MyDriver.kext /System/Library/Extensions/
    6.触摸 /System/Library/Extensions/

    第三次 CFBundleIdentifier 警告。
    我不确定这里是什么类型的问题,此警告可能会使您的驱动程序无法执行。
    但是,您应该检查您的驱动程序的 info.plist,确认您的驱动程序是否具有 CFBundleIdentifier 键和关联值。
    此外,您还应该检查驱动程序的项目设置。

    希望对你有帮助,祝你有个美好的一天!

    【讨论】:

    • 如果你不介意我可以问一个疑问。我的 USB 是 HID 设备。正如你所说,我做了每一件事。如果我在终端 Newtok 上检查:Desktop Rasheed$ kextutil -n -t SampleKextDriver.kext 没有指定内核文件;使用正在运行的内核进行链接。 SampleKextDriver.kext 似乎是可加载的(包括磁盘库的链接)。我得到了这个错误。 OSBundleLibrarieskey>com.apple.iokit.IOHIDFamily1.4com.apple.kpi.iokit10.7 com.apple.kpi.libkern10.7做错了什么
    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多