我在理解 WDK 中的 PHYSICAL_ADDRESS 结构时遇到了一些问题。我认为它是物理内存中的真实物理地址。现在我已经尝试过了——我的驱动程序中有 512 MB RAM 和代码的虚拟 PC
PHYSICAL_ADDRESS pa;
pa.QuadPart = 9223372036854775805; //max LONGLONG - 1
mr = MmMapIoSpace(pa , 100, 0);
DbgPrint("%i ", MmGetPhysicalAddress(mr));
...并且它没有问题地工作。512 MB RAM 这怎么可能?最大物理地址不是 512 MB = cca 512 000 000 吗?什么真正意味着 PHYSICAL_ADDRESS 值?
PS:请不要问我为什么要这样做。我只是想知道这怎么可能。