Share via


MapUserPhysicalPagesScatter 함수(winbase.h)

이전에 할당된 실제 메모리 페이지를 AWE( 주소 창 확장 ) 지역의 지정된 주소에 매핑합니다.

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

구문

BOOL MapUserPhysicalPagesScatter(
  [in] PVOID      *VirtualAddresses,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

매개 변수

[in] VirtualAddresses

다시 매핑할 메모리 영역의 시작 주소 배열에 대한 포인터입니다.

VirtualAddresses의 각 항목은 AWE(주소 창 확장) 지역이 할당될 때 VirtualAlloc 함수가 반환하는 주소 범위 내에 있어야 합니다. NumberOfPages의 값은 배열의 크기를 나타냅니다. 항목은 여러 AWE(주소 창 확장) 지역에서 사용할 수 있습니다.

[in] NumberOfPages

번역을 설정할 실제 메모리 및 가상 주소 공간의 크기(페이지)입니다.

VirtualAddresses의 배열은 가상 주소 범위를 지정합니다.

[in] PageArray

VirtualAddresses의 각 해당 페이지를 처리하는 방법을 나타내는 값 배열에 대한 포인터입니다.

0(0)은 VirtualAddresses 의 해당 항목이 매핑되지 않아야 하며 매핑되어야 하는 0이 아닌 값을 나타냅니다.

이 매개 변수가 NULL이면 VirtualAddresses 배열의 모든 주소가 매핑되지 않습니다.

NumberOfPages의 값은 배열의 크기를 나타냅니다.

반환 값

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

함수가 실패하면 반환 값은 FALSE이고 함수는 부분 또는 기타 매핑 또는 매핑 해제를 수행하지 않습니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

실제 페이지는 매핑되지 않을 수 있지만 해제되지는 않습니다. 실제 페이지를 해제하려면 FreeUserPhysicalPages 를 호출해야 합니다.

실제 메모리 페이지를 지정할 수는 있지만 VirtualAlloc에서 할당한 가상 주소 공간 외부에서 메모리를 확장할 수는 없습니다. 모든 기존 주소 맵은 새 번역으로 자동으로 덮어쓰여지고 이전 번역은 매핑되지 않습니다.

AllocateUserPhysicalPages에 지정된 범위를 벗어나는 실제 메모리 페이지를 매핑할 수 없습니다. 여러 지역을 동시에 매핑할 수 있지만 겹칠 수는 없습니다.

물리적 페이지는 실제 주소에 있을 수 있지만 실제 페이지의 구성에 대한 가정은 하지 않습니다.

다중 프로세서 환경에서 이 함수는 하드웨어 변환 버퍼 일관성을 유지 관리합니다. 이 함수에서 반환되면 모든 프로세서의 모든 스레드가 올바른 매핑을 볼 수 있습니다.

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

요구 사항

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

참고 항목

주소 창 확장

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPages

메모리 관리 함수