Поделиться через


Функция AllocateUserPhysicalPages2 (memoryapi.h)

Выделяет страницы физической памяти для сопоставления и отмены сопоставления в любой области расширений адресного окна (AWE) указанного процесса с расширенными параметрами.

Синтаксис

BOOL AllocateUserPhysicalPages2(
  [in]     HANDLE                  ObjectHandle,
  [in,out] PULONG_PTR              NumberOfPages,
  [out]    PULONG_PTR              PageArray,
  [in,out] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]     ULONG                   ExtendedParameterCount
);

Параметры

[in] ObjectHandle

Дескриптор процесса.

Функция выделяет память, которая впоследствии может быть сопоставлена в виртуальном адресном пространстве этого процесса. Дескриптор должен иметь право доступа PROCESS_VM_OPERATION . Дополнительные сведения см. в разделе Обработка прав на безопасность и доступ.

[in,out] NumberOfPages

Размер выделяемой физической памяти в страницах.

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

[out] PageArray

Указатель на массив для хранения номеров кадров страниц выделенной памяти.

Размер выделенного массива должен быть не меньше , чем NumberOfPages , раз больше размера ULONG_PTR типа данных.

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

[in,out] ExtendedParameters

Указатель на массив MEM_EXTENDED_PARAMETER структур.

[in] ExtendedParameterCount

Число MEM_EXTENDED_PARAMETER в массиве ExtendedParameters .

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

Если функция выполняется успешно, возвращается значение TRUE.

Можно выделить меньше страниц, чем запрошено. Вызывающий объект должен проверка значение параметра NumberOfPages при возврате, чтобы узнать, сколько страниц выделено. Все выделенные номера кадров страниц последовательно помещаются в память, на которую указывает параметр UserPfnArray .

Если функция завершается сбоем, возвращается значение FALSE и кадры не выделяются. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция AllocateUserPhysicalPages2 аналогична функции AllocateUserPhysicalPages , но добавляет параметры ExtendedParameters и ExtendedParameterCount .

Функция AllocateUserPhysicalPages2 используется для выделения физической памяти, которая впоследствии может быть сопоставлена в виртуальном адресном пространстве процесса. Привилегия SeLockMemoryPrivilege должна быть включена в маркере вызывающего объекта, иначе функция завершится сбоем с ERROR_PRIVILEGE_NOT_HELD. Дополнительные сведения см. в разделе Константы привилегий.

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

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

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

Требования

   
Минимальная версия клиента Windows 11, сборка 20348
Минимальная версия сервера Windows Server, сборка 20348
Верхняя часть memoryapi.h
Библиотека onecore.lib
DLL kernelbase.dll

См. также раздел

AllocateUserPhysicalPages

Расширения адресных окон

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Функции управления памятью