相关疑难解决方法(0)

如何在 DriverKit 系统扩展中分配内存并将其映射到另一个进程?

我已在应用程序中分配内存并将其指针和大小传递给 IOConnectCallStructMethod. 然后,IOMemoryDescriptor::CreateMapping我已将此内存映射到 DriverKit 系统扩展进程,并且可以写入此映射的内存位置并从我的应用程序读取数据。

我现在想对系统扩展中分配的内存执行类似的操作,然后将其映射到使用系统扩展的应用程序。我想在系统扩展中创建一组内存缓冲区,然后从应用程序写入它,然后向系统扩展发出信号,告知给IOConnectCallScalarMethod定的缓冲区应发送到 USB 设备,使用IOUSBHostPipe::AsyncIO. 当CompleteAsyncIO发送完成后出现回调时,我会通知应用程序现在可以将数据复制到发送的第一个缓冲区。此机制可能可以使用IOConnectCallAsyncStructMethodOSAction在系统扩展中创建的对象来完成。我不明白的是如何将系统扩展中分配的内存映射到应用程序。

c++ iokit macos-catalina macos-system-extension driverkit

3
推荐指数
1
解决办法
1366
查看次数