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: なぜ私がこれをやっているのか聞かないでください。私はこれがどのように可能であるか疑問に思っています。