Macos IODeviceMemory在哪个KPI库中声明?
谷歌没有任何洞察力。我无法通过搜索找到它 在内核源代码中 我正在使用开源IOProxyVideoFamily实现一个虚拟帧缓冲区 我刚刚用Osdynamicast替换了IODeviceMemory的C风格演员阵容, 因为我怀疑cast会失败。如果是这样,我将知道如何修复 它 但我找不到包含它的KPI库。IODeviceMemory有 从10.0开始就在操作系统中,并且是PCI卡驱动程序所必需的Macos IODeviceMemory在哪个KPI库中声明?,macos,driver,iokit,kernel-extension,xnu,Macos,Driver,Iokit,Kernel Extension,Xnu,谷歌没有任何洞察力。我无法通过搜索找到它 在内核源代码中 我正在使用开源IOProxyVideoFamily实现一个虚拟帧缓冲区 我刚刚用Osdynamicast替换了IODeviceMemory的C风格演员阵容, 因为我怀疑cast会失败。如果是这样,我将知道如何修复 它 但我找不到包含它的KPI库。IODeviceMemory有 从10.0开始就在操作系统中,并且是PCI卡驱动程序所必需的 $ kextlibs -undef-symbols /System/Library/Extension
$ 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的一个子类。这是申报单
包括osdeclaredefaultstructor
(当使用视频卡时,满足对IOProxyVideoCard的依赖性
是一个奇怪的
IOMemoryDescriptor
子类,它不覆盖任何虚拟函数,也不添加任何字段。所以它实际上只是一些用于IOMemoryDescriptor
的静态帮助函数。如果您查看这些助手函数的源代码,您会发现它们实际上都没有创建IODeviceMemory
的实例,而是调用IOSubMemoryDescriptor::withSubRange()
(这显然创建了一个IOSubMemoryDescriptor
对象)和IOMemoryDescriptor::withAddressRange()
(我相信后者创建了一个IOGeneralMemoryDescriptor
)
因此,您的动态强制转换无论如何都不起作用,IODeviceMemory
实际上并不存在——通常没有它的实例。我怀疑这就是为什么没有通过KPI导出自动生成的OSMetaClass内容的原因