谷歌没有洞察力。我无法通过在内核源代码中搜索来弄清楚。
我正在使用开源 IOProxyVideoFamily 来实现虚拟帧缓冲区。
我刚刚用 OSDynamicCast 替换了 C 风格的转换为 IODeviceMemory,因为我怀疑转换会失败。如果是这样,我会知道如何解决它。
但我找不到包含它的 KPI 库。IODeviceMemory 自 10.0 以来一直在操作系统中,并且是 PCI 卡驱动程序所必需的。
$ kextlibs -undef-symbols /System/Library/Extensions/IOProxyFramebuffer.kext/
For all architectures:
com.apple.iokit.IOGraphicsFamily = 2.4.1
com.apple.kpi.iokit = 15.6
com.apple.kpi.libkern = 15.6
com.doequalsglory.driver.IOProxyVideoCard = 1.0d1
For x86_64:
1 symbol not found in any library kext:
ZN14IODeviceMemory9metaClassE
IODeviceMemory 是 IOMemoryDescriptor 的子类。它的声明包括 OSDeclareDefaultStructors。
(安装显卡驱动后,就满足了对IOProxyVideoCard的依赖。)