MMF(memory mapping file)
MMF 구현 과정
1. 파일 개방 - CreateFile 함수를 호출하여 파일을 열고 해당 파일의 핸들을 얻어 이 핸들로 파일을 조작한다.
2. 파일 연결 오브젝트 생성 - CreateFileMapping 함수를 호출하여 메모리에 연결할 파일 정보를 담고 있는 커널 오브젝트를 생성한다.
3. 가상 메모리에 파일 연결 - MapViewOfFile 함수를 호출하여 가상메뫼와 파일을 연결한다. MapViewOfFile 함수의 반환되는 포인터를 가지고 메모리에 접근하면, 메모리가 변경시 파일에도 변경된 내용이 자동으로 반영된다.
void main()
{
HANDLE hFileRead = INVALID_HANDLE_VALUE;
HANDLE hFileMap = INVALID_HANDLE_VALUE;
char *str ;
hFileRead = CreateFile("test.txt",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFileRead==NULL)
printf("!CreateFile\n");
hFileMap = CreateFileMapping(hFileRead,NULL,PAGE_READWRITE,0,100,NULL);
if(hFileMap == NULL)
printf("!hFileMap\n");
str = (char *) MapViewOfFile(hFileMap,FILE_MAP_READ,0,0,0);
if(str == NULL)
printf("!str");
// strcpy(str,"hello");
printf("%s\n",str);
// strcpy(str,"wpets'pdghsdo;fhasdjkfhasflkjas;dfdsaojgs;djgsakdlfsfa");
UnmapViewOfFile(str);
CloseHandle(hFileRead);
CloseHandle(hFileMap);
}