您看到的所有地址都是进程的虚拟地址(不是“物理”地址)。用户空间进程可能使用恰好来自“系统空间”的指针,但这并不意味着进程可以自由访问内核资源,也不意味着这些指针必然映射到物理地址。
这是另一个 Microsoft 链接,可能有助于澄清:
虚拟地址空间
当处理器读取或写入内存位置时,它使用虚拟地址。作为读取或写入操作的一部分,处理器将虚拟地址转换为物理地址。
...
进程可用的虚拟地址范围称为进程的虚拟地址空间。每个用户模式进程都有自己的私有虚拟地址空间。对于 32 位进程,虚拟地址空间通常是 2 GB 范围 0x00000000 到 0x7FFFFFFF。
...
Notepad.exe 和 MyApp.exe 等进程在用户模式下运行。核心操作系统组件和许多驱动程序在更高特权的内核模式下运行。有关处理器模式的更多信息,请参阅用户模式和内核模式。每个用户模式进程都有自己的私有虚拟地址空间,但在内核模式下运行的所有代码共享一个称为系统空间的虚拟地址空间。用户模式进程的虚拟地址空间称为用户空间。
...
在 32 位 Windows 中,总可用虚拟地址空间为 2^32 字节(4 GB)。通常低 2 GB 用于用户空间,高 2 GB 用于系统空间。
...
在用户模式下运行的代码可以访问用户空间,但不能访问系统空间。此限制可防止用户模式代码读取或更改受保护的操作系统数据结构。在内核模式下运行的代码可以访问用户空间和系统空间。也就是说,在内核模式下运行的代码可以访问系统空间和当前用户模式进程的虚拟地址空间。
...
值得注意的是内核模式和用户模式之间的区别:
用户模式和内核模式
当您启动用户模式应用程序时,Windows 会为该应用程序创建一个进程。该进程为应用程序提供了一个私有虚拟地址空间和一个私有句柄表。因为应用程序的虚拟地址空间是私有的,所以一个应用程序不能更改属于另一个应用程序的数据。每个应用程序都是独立运行的,如果一个应用程序崩溃,崩溃仅限于那个应用程序。其他应用程序和操作系统不受崩溃影响。
...除了私有之外,用户模式应用程序的虚拟地址空间是有限的。在用户模式下运行的处理器无法访问为操作系统保留的虚拟地址。限制用户模式应用程序的虚拟地址空间可防止应用程序更改并可能损坏关键操作系统数据。
...