我不确定如何在我的右转权利文件中设置com.apple.developer.driverkit.transport.usb密钥。Info.plist文件已经包含了IOKitPersonalities字典,并且阅读com.apple.developer.driverkit.transport.usb字典看起来应该包含与IOKitPersonalities条目相同信息的条目。
项目的应享权利档案非常类似于关于驱动套件的WWDC视频中显示的内容,将其设置为:
<key>com.apple.developer.driverkit.transport.usb</key>
<true/>当我将它设置为<true/>时,系统扩展就会启动。在我看到应用程序中的日志行之前,我确实看到了一些这样的行:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)这种权利应该只反映IOKitPersonalities字典中的内容吗?
当钥匙被完全移除后,我得到:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
2020-05-06 12:23:19.253517+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aae)::exit(Entitlements check failed)。。所以我想钥匙肯定在那里。
我正在使用log stream --source | grep MyUserUSBInterfaceDriver查看与应用程序相关的日志行
发布于 2020-05-06 11:42:54
最新答案
当我已经发布了一些基于DriverKit的驱动程序时,我发现在实践中它与我在回答中所说的略有不同,尽管我最初的答案与苹果的文档相匹配。
虽然Apple在USB传输权限的文档中同时提到了产品ID和供应商ID,但实际上只有供应商ID与权利/代码签名相关。这意味着,如果您的驱动程序需要支持任何数量的USB设备的供应商ID 1234和2345 (十进制!供应商ID的常用表示法是十六进制,所以不要忘记先转换!)您需要将以下内容包括在您的dext权利中:
<key>com.apple.developer.driverkit.transport.usb</key>
<array>
<dict>
<key>idVendor</key>
<integer>1234</integer>
</dict>
<dict>
<key>idVendor</key>
<integer>2345</integer>
</dict>
</array>要弄清楚,这意味着权限必须是数组 -> 字典的类型,即使您只需要支持一个供应商ID。
列出的idVendor值还必须嵌入到苹果的供应配置文件中,这就是为什么在申请DriverKit权益时必须包括它们的原因。请注意,表单只支持单个供应商ID,因此,如果需要支持多个供应商ID,则必须在自由格式文本字段中列出所有这些ID。
https://stackoverflow.com/questions/61634176
复制相似问题