Обычно адресное окно гораздо больше.

Обычно адресное окно гораздо больше.

Создание эффективных Win32-приложений - ДЖ. Рихтер

// страницы RAM

// уничтожаем адресное окно VirtualFree(pvWindow, 0, MEM_RELEASE);

Как видите, пользоваться AWE несложно. А теперь хочу обратить Ваше внимание на несколько интересных моментов, связанных с этим фрагментом кода.

Вызов VirtualAlloc резервирует адресное окно размером 1 Мб. Обычно адресное окно гораздо больше. Вы должны выбрать его размер в соответствии с объемом бло­ков оперативной памяти, необходимых Вашему приложению. Но, конечно, размер такого окна ограничен размером самого крупного свободного (и непрерывного!) блока в адресном пространстве процесса. Флаг MEM_RESERVE указывает, что я про­сто резервирую диапазон адресов, а флаг MEM_PHYSICAL — что в конечном счете этот диапазон адресов будет связан с физической (оперативной) памятью. Механизм AWE требует, чтобы вся память, связываемая с адресным окном, была доступна для чтения и записи; поэтому в данном случае функции VirtualAlloc можно передать только один атрибут защиты — PAGE_READWRITE. Кроме того, нельзя пользоваться функцией VirtualProtect и пытаться изменять тип защиты этого блока памяти.

Для выделения блока в физической памяти надо вызвать функцию AllocateUser- PhysicalPages:

BOOL AllocateUserPhysicalPages(

HANDLE hProcess,

PULONG_PTR pulRAMPages,

PULONG_PTR aRAMPages);

Она выделяет количество страниц оперативной памяти, заданное в значении, на которое указывает параметр pulRAMPages, и закрепляет эти страницы за процессом, определяемым параметром hProcess.

Операционная система назначает каждой странице оперативной памяти номер фрейма страницы (page frame number). По мере того как система отбирает страни­цы памяти, выделяемые приложению, она вносит соответствующие данные (номер фрейма страницы для каждой страницы оперативной памяти) в массив, на который указывает параметр aRAMPages. Сами по себе эти номера для приложения совершен­но бесполезны; Вам не следует просматривать содержимое этого массива и тем бо­лее что-либо менять в нем. Вы не узнаете, какие страницы оперативной памяти будут выделены под запрошенный блок, да это и не нужно. Когда эти страницы связывают­ся с адресным окном, они появляются в виде непрерывного блока памяти. А что там система делает для этого, Вас не должно интересовать.

Новости

все
25.07.2012
Главный инспектор аэрокосмического агентства США, НАСА, сообщил о расследовании скандального
24.07.2012
Анонсированы Leica M9 и X1: карманный FF и APS-C с фиксом Для тех, кто не желает таскать с
23.07.2012
Скоро беспроводная сеть позволит посмотреть сквозь стену? Видеть сквозь препятствия –

Дизайны

Разработали структуру сайта, создали сайт, соответствующий всем требованиям заказчика. Создали
Разработали структуру сайта, создали сайт по новым технологиям. Создали индивидуальный и
ООО Транспортная Компания «ТрансРусь» предлагает Вам свои услуги по приемке и