Share via


MapViewOfFile3FromApp 함수(memoryapi.h)

호출하는 Windows 스토어 앱의 주소 공간에 파일 매핑 보기를 매핑합니다.

이 함수를 사용하면 다음을 수행할 수 있습니다. 새 할당의 경우 가상 주소 공간의 범위와 2의 강력한 맞춤 제한을 지정할 수 있습니다. 임의의 수의 확장 매개 변수를 지정합니다. 물리적 메모리에 대한 기본 NUMA 노드를 확장 매개 변수로 지정합니다. 및 는 자리 표시자 작업(특히 대체)을 지정합니다.

NUMA 노드를 지정하려면 ExtendedParameters 매개 변수를 참조하세요.

구문

PVOID MapViewOfFile3FromApp(
  [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

섹션을 매핑할 프로세스에 대한 HANDLE 입니다.

[in, optional] BaseAddress

뷰의 원하는 기본 주소입니다. 주소는 가장 가까운 64k 경계로 반올림됩니다.

              If this parameter is <b>NULL</b>, the system picks the base
              address.

BaseAddressNULL이 아닌 경우 제공된 모든 MEM_ADDRESS_REQUIREMENTS 구조체는 모두 0으로 구성되어야 합니다.

[in] Offset

섹션 시작 부분의 오프셋입니다. 64k 정렬되어야 합니다.

[in] ViewSize

매핑할 바이트 수입니다. 값 0은 전체 섹션을 매핑하도록 지정합니다.

크기는 항상 페이지 크기의 배수여야 합니다.

[in] AllocationType

메모리 할당 유형입니다. 이 매개 변수는 0 또는 다음 값 중 하나일 수 있습니다.

의미
MEM_RESERVE
0x00002000
예약된 보기를 매핑합니다.
MEM_REPLACE_PLACEHOLDER
0x00004000
자리 표시자를 매핑된 보기로 바꿉니다. 데이터/pf 지원 섹션 보기만 지원됩니다(이미지, 실제 메모리 등은 지원되지 않음). 자리 표시자를 바꿀 때 BaseAddressViewSize 는 자리 표시자의 개체 틀과 정확히 일치해야 하며 제공된 모든 MEM_ADDRESS_REQUIREMENTS 구조체는 모두 0으로 구성되어야 합니다.

자리 표시자를 매핑된 보기로 바꾼 후 매핑된 보기를 자리 표시자로 다시 해제하려면 UnmapViewOfFileEx 및 UnmapViewOfFile2UnmapFlags 매개 변수를 참조하세요.

자리 표시자는 예약된 메모리 영역의 유형입니다.

MEM_LARGE_PAGES
0x20000000
큰 페이지 보기를 매핑합니다. 큰 페이지 지원을 참조하세요.

[in] PageProtection

원하는 페이지 보호입니다.

SEC_IMAGE 특성으로 만든 파일 매핑 개체의 경우 PageProtection 매개 변수는 효과가 없으며 PAGE_READONLY 같은 유효한 값으로 설정해야 합니다.

[in, out, optional] ExtendedParameters

MEM_EXTENDED_PARAMETER 형식의 확장 매개 변수 하나 이상에 대한 선택적 포인터입니다. 이러한 각 확장 매개 변수 값 자체에는 MemExtendedParameterAddressRequirements 또는 MemExtendedParameterNumaNode형식 필드가 있을 수 있습니다. MemExtendedParameterNumaNode 확장 매개 변수가 제공되지 않으면 동작은 VirtualAlloc/MapViewOfFile 함수와 동일합니다(즉, 실제 페이지에 대한 기본 NUMA 노드는 먼저 메모리에 액세스하는 스레드의 이상적인 프로세서에 따라 결정됨).

[in] ParameterCount

ExtendedParameters가 가리키는 확장 매개 변수 수입니다.

반환 값

성공한 경우 매핑된 뷰의 기본 주소를 반환합니다. 그렇지 않으면 GetLastError를 사용하여 사용할 수 상태 NULL 및 확장 오류를 반환합니다.

설명

이 API는 가상 주소 공간 관리에 대한 특정 요구 사항이 있는 고성능 게임 및 서버 애플리케이션을 지원하는 데 도움이 됩니다. 예를 들어 이전에 예약된 지역 위에 메모리를 매핑합니다. 이는 자동으로 래핑 링 버퍼를 구현하는 데 유용합니다. 그리고 특정 맞춤으로 메모리를 할당; 예를 들어 애플리케이션이 요청 시 큰/거대한 페이지 매핑 지역을 커밋할 수 있도록 합니다.

한 가지 중요한 예외를 제외하고 동일한 파일에서 백업되는 모든 파일 매핑 개체에서 파생된 파일 뷰는 특정 시간에 일관되거나 동일합니다. 일관성은 프로세스 내의 뷰와 다른 프로세스에 의해 매핑되는 뷰에 대해 보장됩니다.

예외는 원격 파일과 관련이 있습니다. MapViewOfFile3FromApp은 원격 파일에서 작동하지만 일관성을 유지하지는 않습니다. 예를 들어 두 컴퓨터가 모두 파일을 쓰기 가능으로 매핑하고 둘 다 동일한 페이지를 변경하는 경우 각 컴퓨터는 페이지에 대한 자체 쓰기만 볼 수 있습니다. 디스크에서 데이터가 업데이트되면 병합되지 않습니다.

앱에 codeGeneration 기능이 있는 경우에만 실행 파일 보호를 요청할 수 있습니다.

예제

코드 예제는 Virtual2Alloc의 시나리오 1을 참조하세요.

요구 사항

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

참고 항목

CreateFileMapping

파일 뷰 만들기

DuplicateHandle

GetSystemInfo

MapViewOfFile3

MapViewOfFileEx

메모리 관리 함수

OpenFileMapping

SYSTEM_INFO

UnmapViewOfFile