使用Xcode创建的设备驱动程序将无法加载

时间:2011-10-17 11:13:44

标签: xcode4 device-driver iokit kernel-extension

我已根据此链接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)我的捆绑标识符是:
                CFBundleIdentifier                 。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

1 个答案:

答案 0 :(得分:3)

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

以下是info.plist中AppleHIDKeyboard.kext的内核依赖关系 (键)OSBundleLibraries≤(/键)
(字典)
(密钥)com.apple.iokit.IOHIDFamily(/键)
(字符串)1.4(/串)
(密钥)com.apple.kpi.iokit(/键)
(字符串)10.0.0d2(/串)
(键)com.apple.kpi.libkern(/键)
(字符串)10.0.0d2(/串)
(/字典)

第二次身份验证失败:
您可以通过以下过程来部署驱动程序来解决此问题 1.在桌面上放置 MyDriver.kext 2.打开终端应用并输入以下命令列表 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. touch / System / Library / Extenstions /

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

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