Как я могу программно определить максимальное пространство пользовательского режима ОС (Windows)?
-
23-08-2019 - |
Вопрос
Я пишу диагностическое приложение, которому необходимо регистрировать то, что пользователь установил в качестве своего пространства пользовательского режима, также известного как.виртуальное адресное пространство пользовательского режима также известное как.переключатель / 3GB в WinXP или переключатель increaseuserva в bcdedit в Vista / Win7.
Подойдет либо C ++, либо C ++ / CLI.
Есть какие - нибудь идеи ?
Решение
Глобальная память Statusex даст вам MEMORYSTATUSEX СТАТУС ПАМЯТИ структура с ullTotalVirtual
:
Размер части пользовательского режима виртуального адресного пространства вызывающего процесса в байтах.Это значение зависит от типа процесса, типа процессора и конфигурации операционной системы.Например, это значение составляет примерно 2 ГБ для большинства 32-разрядных процессов на процессоре x86 и примерно 3 ГБ для 32-разрядных процессов с поддержкой больших адресов, запущенных в системе с включенной настройкой на 4 гигабайта.
Обратите внимание, что вам нужно будет пометить свой EXE-файл как БОЛЬШОЕ АДРЕСНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ для того, чтобы смотрите 3 ГБ в вашем процессе.
Я думаю, что есть другая функция, которая также возвращает эту информацию (no - not Глобальный статус памяти который устарел) вместе с информацией о процессоре - но я не могу вспомнить его ATM.