Как я могу программно определить максимальное пространство пользовательского режима ОС (Windows)?

StackOverflow https://stackoverflow.com/questions/894663

Вопрос

Я пишу диагностическое приложение, которому необходимо регистрировать то, что пользователь установил в качестве своего пространства пользовательского режима, также известного как.виртуальное адресное пространство пользовательского режима также известное как.переключатель / 3GB в WinXP или переключатель increaseuserva в bcdedit в Vista / Win7.

Подойдет либо C ++, либо C ++ / CLI.

Есть какие - нибудь идеи ?

Это было полезно?

Решение

Глобальная память Statusex даст вам MEMORYSTATUSEX СТАТУС ПАМЯТИ структура с ullTotalVirtual:

Размер части пользовательского режима виртуального адресного пространства вызывающего процесса в байтах.Это значение зависит от типа процесса, типа процессора и конфигурации операционной системы.Например, это значение составляет примерно 2 ГБ для большинства 32-разрядных процессов на процессоре x86 и примерно 3 ГБ для 32-разрядных процессов с поддержкой больших адресов, запущенных в системе с включенной настройкой на 4 гигабайта.

Обратите внимание, что вам нужно будет пометить свой EXE-файл как БОЛЬШОЕ АДРЕСНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ для того, чтобы смотрите 3 ГБ в вашем процессе.

Я думаю, что есть другая функция, которая также возвращает эту информацию (no - not Глобальный статус памяти который устарел) вместе с информацией о процессоре - но я не могу вспомнить его ATM.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top