【发布时间】:2016-08-27 15:56:33
【问题描述】:
我熟悉 BIOS int 15 - E820 功能,您可以在其中选择 fixed 物理位置,放置任何您想要的位置,操作系统不会覆盖它,您只需访问该固定位置即可内存地址(可以先映射到虚拟指针等)。
但在 UEFI 的情况下,据我所知,没有为用户保留内存区域,因此我不能依赖在特定内存地址分配缓冲区(如果这可能吗?),因此我必须使用 UEFI 内存记忆函数 - 它返回一个 not 固定的指针。
所以我的问题是 -
是否可以分配一个在操作系统启动后不会被覆盖的缓冲区?
如何将分配缓冲区的指针传递给操作系统,以便我可以从操作系统访问它(再次,因为分配,希望缓冲区本身没有被覆盖,不是固定的位置)。
谢谢!
【问题讨论】:
-
没有为 INT 15h、AX=E820h 的用户保留内存区域。它只返回已用内存区域的列表。您可以将其替换为您自己的提供修改列表的例程,这样使用此函数的操作系统就不会使用某些内存区域。也许你可以用等效的 UEFI 函数
GetMemoryMap做同样的事情。
标签: c windows memory-management bios uefi