ios 如何在iPadOS上查找并打开DriverKit服务并与之通信?

gojuced7  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(208)

我正在尝试在iPad应用和DriverKit dext之间进行通信,但IOServiceGetMatchingServices找不到要与之通信的dext。
我的应用程序一直基于Apple的macOS示例:https://developer.apple.com/documentation/driverkit/communicating_between_a_driverkit_extension_and_a_client_app
使用Objective-C Package iPad应用程序围绕C++ CppUserClient。我不得不对Entitlements和一些CppUserClient进行一些更改,因为有些功能在iPadOS上不可用(不同的Entitlements,如com.apple.developer.driverkit.communicates-with-drivers)或Apple示例代码中不推荐的东西(例如:kIOMasterPortDefault -> kIOMainPortDefault)。
这条线
ret = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching(dextIdentifier), &iterator);
成功,但迭代器中没有任何可打开的内容;没有匹配的服务。我确信驱动程序已经启动了,因为我可以在控制台日志中看到init和Start成功。
iPad应用程序与DriverKit的通信方式是否完全不同?或者只是需要对苹果的示例macOS CppUserClient进行其他IOKit更改才能与iPad一起工作?在iPadOS上有没有类似ioreg的东西,我可以用它来查看正在运行的服务,并查看dext是否在那里进行通信?

qyzbxkaa

qyzbxkaa1#

要使IOService对象符合匹配条件,必须对其调用RegisterService()。从本质上讲,这向系统的其他部分发出信号,表明该对象已准备好供客户端连接到它,无论是其他内核或DriverKit IOService节点,还是希望与IOServiceOpen()连接的用户客户端。

相关问题