MapViewOfFile3 함수(memoryapi.h)
파일 또는 페이지 파일 지원 섹션의 보기를 지정된 프로세스의 주소 공간에 매핑합니다.
통사론
PVOID MapViewOfFile3(
[in] HANDLE FileMapping,
[in] HANDLE Process,
[in, optional] PVOID BaseAddress,
[in] ULONG64 Offset,
[in] SIZE_T ViewSize,
[in] ULONG AllocationType,
[in] ULONG PageProtection,
[in, out, optional] MEM_EXTENDED_PARAMETER *ExtendedParameters,
[in] ULONG ParameterCount
);
매개 변수
[in] FileMapping
지정된 프로세스의 주소 공간에 매핑할 섹션에 대한 HANDLE.
[in] Process
섹션이 매핑되는 프로세스에
[in, optional] BaseAddress
뷰의 원하는 기본 주소입니다(주소는 가장 가까운 64k 경계로 반올림됨).
이 매개 변수가 NULL
[in] Offset
섹션 시작 부분의 오프셋입니다.
allocationType에서 MEM_LARGE_PAGES 사용되는 경우 오프셋은 GetLargePageMinimum에 64k로 정렬되거나 정렬되어야 합니다. 또한 MEM_REPLACE_PLACEHOLDER AllocationType에서 사용되는 경우 오프셋은 VirtualAlloc2에서 부여한 기본 페이지 크기에 맞게 페이지 정렬되어야 합니다.
[in] ViewSize
매핑할 바이트 수입니다. 값 0은 전체 섹션을 매핑하도록 지정합니다.
크기는 항상 페이지 크기의 배수여야 합니다.
[in] AllocationType
메모리 할당의 유형입니다. 이 매개 변수는 0 또는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
예약된 보기를 매핑합니다. |
|
자리 표시자를 매핑된 보기로 바꿉니다. 데이터/pf 지원 섹션 뷰만 지원됩니다(이미지, 실제 메모리 등은 없음). 자리 표시자를 바꿀 때 BaseAddress 및 ViewSize 자리 표시자의 개체 틀과 정확히 일치해야 하며 제공된 모든 MEM_ADDRESS_REQUIREMENTS 구조체는 모두 0으로 구성되어야 합니다.
자리 표시자를 매핑된 보기로 바꾼 후 매핑된 보기를 자리 표시자로 다시 해제하려면 자리 표시자는 예약된 메모리 영역의 유형입니다. Offset 및 BaseAddress 대한 64k 맞춤 요구 사항은 이 플래그를 지정할 때 적용되지 않습니다. |
|
큰 페이지 보기를 매핑합니다. 이 플래그는 큰 페이지 지원사용하여 뷰를 매핑해야 한다고 지정합니다. 보기의 크기는 GetLargePageMinimum 함수에서 보고한 큰 페이지 크기의 배수여야 하며 SEC_LARGE_PAGES 옵션을 사용하여 파일 매핑 개체를 만들어야 합니다.
BaseAddress 매개 변수에 null이 아닌 값을 제공하는 경우 값은 GetLargePageMinimum배수여야 합니다.
Offset 대한 64k 맞춤 요구 사항은 이 플래그를 지정할 때 적용되지 않습니다. |
[in] PageProtection
원하는 페이지 보호입니다.
SEC_IMAGE 특성으로 만든 파일 매핑 개체의 경우 PageProtection 매개 변수는 효과가 없으며 PAGE_READONLY같은 유효한 값으로 설정해야 합니다.
[in, out, optional] ExtendedParameters
MEM_EXTENDED_PARAMETER형식의 하나 이상의 확장 매개 변수에 대한 선택적 포인터입니다. 이러한 각 확장 매개 변수 값 자체에는
[in] ParameterCount
extendedParameters
반환 값
성공한 경우 매핑된 뷰의 기본 주소를 반환합니다. 그렇지 않으면 NULL 반환하고 확장 오류 상태는 GetLastError사용하여 사용할 수 있습니다.
발언
이 API는 가상 주소 공간 관리에 대한 특정 요구 사항이 있는 고성능 게임 및 서버 애플리케이션을 지원하는 데 도움이 됩니다. 예를 들어 이전에 예약된 지역 위에 메모리를 매핑합니다. 이는 자동으로 래핑 링 버퍼를 구현하는 데 유용합니다. 그리고 특정 맞춤을 사용하여 메모리를 할당합니다. 예를 들어 애플리케이션이 요청 시 큰/거대한 페이지 매핑된 지역을 커밋할 수 있도록 합니다.
새 할당에 이 함수를 사용하면 다음을 수행할 수 있습니다.
- 가상 주소 공간 범위 및 2개 맞춤 제한 기능을 지정합니다.
- 임의의 확장 매개 변수 수 지정
- 물리적 메모리에 대한 기본 NUMA 노드를 확장 매개 변수로 지정
- 자리 표시자 작업(특히 대체)을 지정합니다.
NUMA 노드를 지정하려면 ExtendedParameters 매개 변수를 참조하세요.
예제
코드 예제는 VirtualAlloc2시나리오 1을 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 1803 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2016 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | memoryapi.h(Windows.h 포함) |
라이브러리 | onecore.lib |
DLL | Kernel32.dll |
참고 항목
mapViewOfFile
mapViewOfFile2