Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos IODeviceMemory在哪个KPI库中声明?_Macos_Driver_Iokit_Kernel Extension_Xnu - Fatal编程技术网

Macos IODeviceMemory在哪个KPI库中声明?

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

谷歌没有任何洞察力。我无法通过搜索找到它 在内核源代码中

我正在使用开源IOProxyVideoFamily实现一个虚拟帧缓冲区

我刚刚用Osdynamicast替换了IODeviceMemory的C风格演员阵容, 因为我怀疑cast会失败。如果是这样,我将知道如何修复 它

但我找不到包含它的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的一个子类。这是申报单 包括osdeclaredefaultstructor

(当使用视频卡时,满足对IOProxyVideoCard的依赖性
是一个奇怪的
IOMemoryDescriptor
子类,它不覆盖任何虚拟函数,也不添加任何字段。所以它实际上只是一些用于
IOMemoryDescriptor
的静态帮助函数。如果您查看这些助手函数的源代码,您会发现它们实际上都没有创建
IODeviceMemory
的实例,而是调用
IOSubMemoryDescriptor::withSubRange()
(这显然创建了一个
IOSubMemoryDescriptor
对象)和
IOMemoryDescriptor::withAddressRange()
(我相信后者创建了一个
IOGeneralMemoryDescriptor

因此,您的动态强制转换无论如何都不起作用,
IODeviceMemory
实际上并不存在——通常没有它的实例。我怀疑这就是为什么没有通过KPI导出自动生成的OSMetaClass内容的原因