Как прокомментировал wj32, приложения пользовательского режима работают только с виртуальной памятью.Всем им предоставляется одинаковое виртуальное адресное пространство, размер которого обычно составляет около 2 ГБ (в противном случае их можно настроить, что характерно для серверов БД).Точные адреса можно получить, используя GetSystemInfo
.Например, в моей системе это то, что я получаю:
Python 2.6.3
>>> import win32api
>>> win32api.GetSystemInfo()
(0, 4096, 65536, 2147418111, 3L, 2, 586, 65536, (6, 5898))
3-е и 4-е приведенные значения указывают минимальные / максимальные адреса памяти, поэтому с точки зрения пользовательского режима все процессы получают 65536-2147418111 каких адресное пространство, примерно 2 ГБ.Однако я не думаю, что эта информация очень вам поможет.Если вы ищете страницы с определенными атрибутами в адресном пространстве процесса, вы можете использовать VirtualQueryEx
(как снова прокомментировал wj32).Поведение VirtualQueryEx
позволяет вам вызывать его несколько раз, начиная с минимального адреса процесса и увеличивая в соответствии с результатом предыдущего вызова, и получая полное представление о целевом пространстве памяти процесса.