USB驱动程序没有加载一个USB映像但加载另一个?

时间:2014-12-15 20:01:26

标签: icons usb osx-yosemite iokit kernel-extension

我有一个具有多个IOKitPersonalities的usb驱动程序,每个驱动程序都有一个IOMediaIcon条目。如果在加载kext之后插入usb设备(kext加载正常,签名等),一切正常。但重新启动计算机后,只有一个USB设备显示标准的橙色默认USB图像。如果我拔掉/重新加载kext /重新插入USB设备,图像会得到纠正。

有什么想法?

(详细内容: 运行Mac OS X 10.10.1(我不认为我在优胜美地之前看过这个问题,绝对不是10.6.8的问题),所有的个性都是一样的(除了ID(我认为自从usb以来这是正确的)如果我在加载kext后插入,则设备正确加载)所以它与个性没有错误...)

1 个答案:

答案 0 :(得分:0)

我不知道如何解决您的具体问题,但我可以给您一些可能有用或可能没有帮助的指针(抱歉,对于评论来说有点太大,但不是正确答案):

  • 图标内容在用户空间中处理,内核在理论上唯一需要做的就是在注册服务之前设置IOMediaIcon。设置个性应该没问题。
  • 在用户空间中,磁盘仲裁接管。您可以从Apple's Open Source Site下载(大部分?)源代码。
  • 快速搜索显示,在DADisk.c
  • 中,diskarbitrationd源代码确实引用了IOMediaIcon
  • 我不知道重新编译diskarbitrationd并用自己的二进制代替Apple的二进制文件有多好,但是如果可行,也许你可以修改它来记录图标代码的输出,并以这种方式接近你的答案?
  • 我可能想到的另一个错误来源是,虽然系统获取了正确的图标信息,但它实际上找不到图标文件?我已经听说过/ System / Library / Extensions vs / Library / Extensions上下文中与bundle和资源相关的各种错误,因为他们添加了后者。如果您的图标位于kext捆绑包中,并且已切换到/ Library / Extensions,请尝试切换回SLE。

我希望这有助于您的调试工作!