Когда функция возвращает управление, значение
Когда функция возвращает управление, значение
Создание эффективных Win32-приложений - ДЖ. Рихтер
Когда функция AllocateUserPhysicalPages возвращает управление, значение вpulRAM- Pages сообщает количество фактически выделенных страниц. Обычно оно совпадает с тем, что Вы передаете функции, но может оказаться и поменьше.
Страницы оперативной памяти выделяются только процессу, из которого была вызвана данная функция; AWE не разрешает проецировать их на адресное пространство другого процесса. Поэтому такие блоки памяти нельзя разделять между процессами.
Конечно, оперативная память — ресурс драгоценный, и приложение может выделить лишь ее незадействованную часть. Не злоупотребляйте механизмом AWE: если Ваш процесс захватит слишком много оперативной памяти, это может привести к интенсивной перекачке страниц на диск и резкому падению производительности всей системы. Кроме того, это ограничит возможности системы в создании новых процессов, потоков и других ресурсов. (Мониторинг степени использования физической памяти можно реализовать через функцию GlobalMemoryStatusEx.)
AllocateUserPhysicalPages требует также, чтобы приложению была разрешена блокировка страниц в памяти (т. е. у пользователя должно быть право «Lock Pages in Memory»), а иначе функция потерпит неудачу. По умолчанию таким правом пользователи или их группы не наделяются. Оно назначается учетной записи Local System, которая обычно используется различными службами. Если Вы хотите запускать интерактивное приложение, вызывающее AllocateUser- PhysicalPages, администратор должен предоставить Вам соответствующее право еще до того, как Вы зарегистрируетесь в системе.
Теперь, создав адресное окно и выделив блок памяти, я связываю этот блок с окном вызовом функции MapUserPhysicalPages:
BOOL MapUserPhysicalPages(