Memory 在WDK驱动程序中,realy是什么意思?

Memory 在WDK驱动程序中,realy是什么意思?,memory,memory-address,drivers,wdk,Memory,Memory Address,Drivers,Wdk,我在理解WDK中的物理地址结构方面有点问题。我以为它是物理内存中的真实物理地址。现在我已经试过了——我有一台512MB内存的虚拟PC,驱动程序中有代码 PHYSICAL_ADDRESS pa; pa.QuadPart = 9223372036854775805; //max LONGLONG - 1 mr = MmMapIoSpace(pa , 100, 0); DbgPrint("%i ", MmGetPhysicalAddress(mr)); 。。。它毫无问题地工作了。使用512 MB R

我在理解WDK中的物理地址结构方面有点问题。我以为它是物理内存中的真实物理地址。现在我已经试过了——我有一台512MB内存的虚拟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吗?什么是realy表示物理地址值


请不要问我为什么要这样做。我只是想知道这是怎么可能的。

代码正常工作意味着您成功地将该(可能是伪造的)物理地址映射到代码可以读写的虚拟地址。这只是页面表中的一个条目。显然,系统没有验证物理地址范围。尝试解除对获取的虚拟地址的防护: DbgPrint(“%x\n”,*((普隆)mr))