EFI 内存映射 returns EFIConventionalMemory 的 0 个部分

EFI Memory Map returns 0 sections of EFIConventionalMemory

如标题所述,在 UEFI 引导加载程序中获取 EFI 内存映射不会产生 EFIConventionalMemory 的任何部分。如果我没记错的话,这应该是大部分内存吧?

它在 QEMU 和真实硬件上都返回了这个。将 QEMU 设置为具有 2GB RAM 会导致 ACPIReclaimMemory 的内存段由大部分内存(2009MB 的 ACPI 可回收)组成,这对我来说似乎很荒谬。这是预期的行为还是有问题?

谢谢。

编辑:这是我正在使用的类型列表

const char* EFI_MEMORY_TYPE_STRINGS[] {
"EfiReservedMemoryType",
"EfiRuntimeServicesCode",
"EfiRuntimeServicesData",
"EfiMemoryMappedIO",  
"EfiMemoryMappedIOPortSpace",
"EfiPalCode",
"EfiUnusableMemory",
"EfiACPIReclaimMemory",
"EfiLoaderCode",
"EfiLoaderData", 
"EfiBootServicesCode",
"EfiBootServicesData",
"EfiConventionalMemory",
"EfiACPIMemoryNVS"  
};

内存类型列表不正确。这是正确的 EFI_MEMORY_TYPE_STRINGS:

const char* EFI_MEMORY_TYPE_STRINGS[] {
"EfiReservedMemoryType",
"EfiLoaderCode",
"EfiLoaderData",
"EfiBootServicesCode",
"EfiBootServicesData",
"EfiRuntimeServicesCode",
"EfiRuntimeServicesData",
"EfiConventionalMemory",
"EfiUnusableMemory",
"EfiACPIReclaimMemory",
"EfiACPIMemoryNVS",
"EfiMemoryMappedIO",
"EfiMemoryMappedIOPortSpace",
"EfiPalCode",
};

感谢大家的帮助