UnmapViewOfFile 함수(memoryapi.h)
호출 프로세스의 주소 공간에서 파일의 매핑된 보기를 매핑 해제합니다.
구문
BOOL UnmapViewOfFile(
[in] LPCVOID lpBaseAddress
);
매개 변수
[in] lpBaseAddress
매핑을 해제할 파일의 매핑된 뷰의 기본 주소에 대한 포인터입니다. 이 값은 MapViewOfFile 패밀리의 함수 중 하나에 대한 이전 호출에서 반환된 값과 동일해야 합니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
파일의 매핑된 뷰를 매핑 해제하면 프로세스의 주소 공간에서 뷰가 차지하는 범위가 무효화되고 범위를 다른 할당에 사용할 수 있게 됩니다. 프로세스의 작업 집합에 포함된 매핑되지 않은 각 가상 페이지에 대한 작업 집합 항목을 제거하고 프로세스의 작업 집합 크기를 줄입니다. 또한 해당 실제 페이지의 공유 수도 감소합니다.
매핑되지 않은 보기에서 수정된 페이지는 공유 수가 0에 도달할 때까지 디스크에 기록되지 않으며, 즉 페이지를 공유하는 모든 프로세스의 작업 집합에서 매핑되지 않거나 잘릴 때까지 디스크에 기록되지 않습니다. 그럼에도 불구하고 수정된 페이지는 디스크에 "게으름"으로 기록됩니다. 즉, 수정 사항이 메모리에 캐시되고 나중에 디스크에 기록될 수 있습니다. 전원 오류 또는 시스템 충돌 시 데이터 손실 위험을 최소화하려면 애플리케이션이 FlushViewOfFile 함수를 사용하여 수정된 페이지를 명시적으로 플러시해야 합니다.
애플리케이션이 파일 매핑 개체를 만드는 데 사용되는 파일 핸들을 닫을 수 있지만 시스템은 파일의 마지막 보기가 매핑되지 않을 때까지 해당 파일을 열어 둡니다. 마지막 보기가 아직 매핑되지 않은 파일은 공유 제한 없이 열려 있습니다.
Windows Server 2012 이 함수는 다음 기술에서 지원됩니다.
기술 | 지원됨 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | Yes |
SMB 3.0 TFO(투명 장애 조치(failover)) | Yes |
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 | Yes |
CsvFS(클러스터 공유 볼륨 파일 시스템) | Yes |
ReFS(Resilient File System) | 예 |
예제
예제는 파일 내에서 보기 만들기를 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | memoryapi.h(Windows.h, Memoryapi.h 포함) |
라이브러리 | onecore.lib |
DLL | Kernel32.dll |
참고 항목
메모리 관리 함수