Share via


MapUserPhysicalPages 함수(memoryapi.h)

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

여러 지역의 일괄 처리 매핑 및 매핑 해제를 수행하려면 MapUserPhysicalPagesScatter 함수를 사용합니다.

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

구문

BOOL MapUserPhysicalPages(
  [in] PVOID      VirtualAddress,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

매개 변수

[in] VirtualAddress

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

lpAddress 값은 AWE(Address Windowing Extensions) 지역이 할당될 때 VirtualAlloc 함수가 반환하는 주소 범위 내에 있어야 합니다.

[in] NumberOfPages

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

가상 주소 범위는 lpAddress부터 연속됩니다. 실제 프레임은 UserPfnArray에 의해 지정됩니다.

총 페이지 수는 AllocateUserPhysicalPages에 지정된 범위의 끝을 넘어 시작 주소에서 확장할 수 없습니다.

[in] PageArray

실제 페이지 프레임 번호 배열에 대한 포인터입니다.

이러한 프레임은 이 함수에서 반환할 때 lpAddress 인수에 의해 매핑됩니다. 할당된 메모리의 크기는 적어도 NumberOfPagesULONG_PTR 데이터 형식의 크기여야 합니다.

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

이 매개 변수가 NULL이면 지정된 주소 범위가 매핑되지 않습니다. 또한 지정된 실제 페이지는 해제되지 않으며 FreeUserPhysicalPages 를 호출하여 해제해야 합니다.

반환 값

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

함수가 실패하면 반환 값은 FALSE 이고 매핑이 수행되지 않습니다(부분 또는 그렇지 않은 경우). 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

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

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

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

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

현재 주소 범위의 매핑을 해제하려면 NULL 을 실제 메모리 페이지 배열 매개 변수로 지정합니다. 현재 매핑된 페이지는 매핑되지 않지만 해제되지 않습니다. 실제 페이지를 해제하려면 FreeUserPhysicalPages 를 호출해야 합니다.

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

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

예제

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

요구 사항

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

참고 항목

주소 창 확장

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPagesScatter

메모리 관리 함수