AllocateUserPhysicalPages 함수(memoryapi.h)

지정된 프로세스의 AWE( 주소 창 확장 ) 영역 내에서 매핑 및 매핑 해제할 실제 메모리 페이지를 할당합니다.

Itanium 기반 시스템의 64비트 Windows: 페이지 크기의 차이로 인해 32비트 애플리케이션에는 AllocateUserPhysicalPages 가 지원되지 않습니다.

구문

BOOL AllocateUserPhysicalPages(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray
);

매개 변수

[in] hProcess

프로세스에 대한 핸들입니다.

함수는 나중에 이 프로세스의 가상 주소 공간 내에서 매핑할 수 있는 메모리를 할당합니다. 핸들에 PROCESS_VM_OPERATION 액세스 권한이 있어야 합니다. 자세한 내용은 프로세스 보안 및 액세스 권한을 참조하세요.

[in, out] NumberOfPages

할당할 실제 메모리의 크기(페이지)입니다.

컴퓨터의 페이지 크기를 확인하려면 GetSystemInfo 함수를 사용합니다. 출력에서 이 매개 변수는 실제로 할당된 페이지 수를 받으며, 이는 요청된 수보다 작을 수 있습니다.

[out] PageArray

할당된 메모리의 페이지 프레임 번호를 저장할 배열에 대한 포인터입니다.

할당된 배열의 크기는 NumberOfPagesULONG_PTR 데이터 형식의 크기 이상이어야 합니다.

이 버퍼를 수정하지 마세요. 여기에는 운영 체제 데이터가 포함되어 있으며 손상은 치명적일 수 있습니다. 버퍼의 정보는 애플리케이션에 유용하지 않습니다.

반환 값

함수가 성공하면 반환 값은 TRUE입니다.

요청된 것보다 적은 수의 페이지를 할당할 수 있습니다. 호출자는 반환 시 NumberOfPages 매개 변수 값을 검사 할당된 페이지 수를 확인해야 합니다. 할당된 모든 페이지 프레임 번호는 UserPfnArray 매개 변수가 가리키는 메모리에 순차적으로 배치됩니다.

함수가 실패하면 반환 값은 FALSE이고 프레임은 할당되지 않습니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

AllocateUserPhysicalPages 함수는 나중에 프로세스의 가상 주소 공간 내에서 매핑할 수 있는 실제 메모리를 할당하는 데 사용됩니다. 호출자의 토큰에서 SeLockMemoryPrivilege 권한을 사용하도록 설정해야 합니다. 그렇지 않으면 함수가 ERROR_PRIVILEGE_NOT_HELD 함께 실패합니다. 자세한 내용은 권한 상수를 참조하세요.

이 함수에 의해 할당된 메모리는 시스템에 물리적으로 존재해야 합니다. 메모리가 할당되면 잠기고 나머지 가상 메모리 관리 시스템에서 사용할 수 없습니다.

물리적 페이지는 둘 이상의 가상 주소에서 동시에 매핑할 수 없습니다.

물리적 페이지는 실제 주소에 있을 수 있습니다. 실제 페이지의 구성에 대해 가정해서는 안 됩니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 매크로를 0x0500 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

이후 릴리스에서 SDK에 추가된 AllocateUserPhysicalPages2AllocateUserPhysicalPages와 동일하지만 ExtendedParametersExtendedParameterCount 매개 변수를 추가합니다.

예제

예제는 AWE 예제를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 memoryapi.h(Windows.h, Memoryapi.h 포함)
라이브러리 onecore.lib
DLL Kernel32.dll

참고 항목

주소 창 확장

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

메모리 관리 함수

AllocateUserPhysicalPages2