Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

AllocateUserPhysicalPages

01.01.2007

Функция AllocateUserPhysicalPages выделяет страницы физической памяти, которые могут быть впоследствии спроецированы или переспроецированы в любой регион {расширения адресной оболочки Windows} (AWE-регион) указанного процесса.

function AllocateUserPhysicalPages(
  hProcess: THandle, // дескриптор процесса
  var NumberOfPages: Cardinal, // число страниц
  var UserPfnArray: Pointer    // адрес хранилища
): Boolean; stdcall;

Параметры

hProcess [in]

Дескриптор процесса. Функция выделяет память в виртуальном адресном пространстве этого процесса. Пользователь, запускающий вызывающее приложение, должен иметь привелегию фиксирования страниц памяти (Lock Pages in Memory) для данного процесса. Если это не выполнено, вызов функции завершится неудачно.

NumberOfPages [in/out]

Указывает размер (в страницах) физической памяти, которая будет выделена. Используйте функцию GetSysInfo для того, чтобы определить размер страницы на вашем компьютере. В этом параметре также возвращается число страниц, которые были действительно выделены. Это число может быть меньше запрашиваемого.

UserPfnArray [out]

Задает виртуальный адрес, по которому будут сохранены номера фреймов страниц выделенной памяти. Размер памяти, выделенной по данному указателю, должен по меньшей мере вместить NumberOfPages элементов типа Cardinal.

Важно! Не пытайтесь модифицировать содержимое этого буфера. Он содержит данные, принадлежащие операционной системе, повреждение которых можт повлечь за собой катастрофические последствия. В этом буфере не содержиться никакой информации, необходимой вашему приложению.

Возвращаемое значение

В случае успешного завершения функция возвращает True. В результате были выделены несколько страниц физической памяти. Это число может быть меньше запрашиваемого, поэтому вы должны всегда проверять значение NumberOfPages для того, чтобы узнать, какое именно количество страниц было выделено. Фреймы всех выделенных страниц последовательно помещаются в память на которую указывает параметр UserPfnArray.

В случае ошибки функция вернет False. Для получения расширенной информации об ошибке следует сделать вызов GetLastError.

Описание

Функция AllocateUserPhysicalPages используется для выделения физической памяти. Память, выделяемая этой функцией, должна физически присутствовать в системе. Выделенная однажды, она фиксирует свое расположение в памяти и более не управляется менеджером памяти Windows 2000.

Физическая страница памяти не может быть спроецирована по более чем одному виртуальному адресу.

Физическая страница может находиться по любому физическому адресу. Вы не должны делать никаких предположений относительно смежности физических страниц.

Используйте функцию GetSystemInfo для того, чтобы определить размер страницы на вашем компьютере.

Требования

Windows NT/2000: Требуется Windows 2000 или более поздняя версия

Windows 95/98: Не поддерживается

Бибиотека: Kernel32.dll

Подключаемый модуль: Не описана

© Mystic, 2002