파일 뷰 만들기

파일의 데이터를 프로세스의 가상 메모리에 매핑하려면 파일 보기를 만들어야 합니다. MapViewOfFileMapViewOfFileEx 함수는 CreateFileMapping에서 반환된 파일 매핑 개체 핸들을 사용하여 프로세스의 가상 주소 공간에서 파일 또는 파일의 일부를 봅니다. CreateFileMapping에서 파일 매핑 개체를 만들 때 액세스 플래그가 지정된 함수와 충돌하면 이러한 함수가 실패합니다.

MapViewOfFile 함수는 파일 뷰에 대한 포인터를 반환합니다. MapViewOfFile에 지정된 주소 범위의 포인터를 역참조하면 애플리케이션이 파일에서 데이터를 읽고 파일에 데이터를 쓸 수 있습니다. 파일 뷰에 쓰면 파일 매핑 개체가 변경됩니다. 디스크의 파일에 대한 실제 쓰기는 시스템에서 처리됩니다. 파일 매핑 개체가 기록될 때 데이터가 실제로 전송되지 않습니다. 대신 대부분의 파일 입력 및 출력(I/O)은 일반 시스템 성능을 향상시키기 위해 캐시됩니다. 애플리케이션은 FlushViewOfFile 함수를 호출하여 시스템에서 디스크 트랜잭션을 즉시 수행하도록 하여 이 동작을 재정의할 수 있습니다.

MapViewOfFileEx 함수는 프로세스가 lpvBase 매개 변수에서 프로세스의 가상 주소 공간에서 파일 보기의 기본 주소를 지정할 수 있다는 점을 제외하고 MapViewOfFile 함수와 동일하게 작동합니다. 지정된 주소에 공간이 부족하면 호출이 실패합니다. 따라서 파일을 여러 프로세스의 동일한 주소에 매핑해야 하는 경우 프로세스는 적절한 주소를 협상해야 합니다. lpvBase 매개 변수는 시스템 메모리 할당 세분성의 정수 배수여야 하며 호출이 실패합니다. 시스템의 메모리 할당 세분성을 가져오려면 GetSystemInfo 함수를 사용하여 SYSTEM_INFO 구조체의 멤버를 채웁니다.

애플리케이션은 동일한 파일 매핑 개체에서 여러 파일 보기를 만들 수 있습니다. 파일 뷰는 파생된 파일 매핑 개체와 크기가 다를 수 있지만 파일 매핑 개체보다 작아야 합니다. MapViewOfFiledwOffsetHighdwOffsetLow 매개 변수로 지정된 오프셋은 시스템의 할당 세분성의 배수여야 합니다.

파일 내에서 보기 만들기