파일매핑 순서

1) CreateFile API로 파일을 연다.

2) CreateFileMapping API로 그 파일에 대한 파일 매핑 객체를 생성한다.

3) MapViewOfFile API로 파일 매핑 객체의 뷰를 생성한다.

 

HANDLE CreateFileMapping(                             //반환값: 객체 핸들 , 실패시 = INVALID_HANDLE_VALUE 반환

      HANDLE hFile,                                           //파일 핸들

      LPSECURITY_ATTIRBUTES lpAttrs,               //보안 속성

      DWORD flProtect,                                        //접근 허가 , 액세스 타입(PAGE_READONLY,

PAGE_READWRITE,PAGE_WRITECOPY)


      DWORD dwMaxSizeHigh,                            //매핑할 크기의 상위 32비트     , 둘다 0이면 전체파일

      DWORD dwMaxSizeLow,                            //매핑할 크기의 하위 32비트     , 둘다 0이면 전체파일

      LPCTSTR lpName);                                    //객체명 , 첫번째 인수를 NULL로 주었을때 다른 프로세스와
                                                                       동기화하기 위한 목적

 

뷰를 만들어 가상 주소 공간에 매핑! >>

매핑해서 파일 읽고 쓰려면 MapViewOfFile API로 '뷰'를 생성해야한다.

뷰는 실제 파일 내용이 매핑되는 가상 주소 영역.

 

LPVOID MapViewOfFile(                      //반환값: 맵핍항 프로그램상의 주소

      HANDLE hFileMapObj,                  //파일 매핑 객체 핸들 ,

      DWORD dwDesiredAccess,         //필요한 접근 제한 액세스 타입(FILE_MAP_WRITE,FILE_MAP_READ,FILE_
                                                     MAP_ALL_ACCESS,FILE_MAP_COPY)

      DWORD dwFileOfsHigh,              //뷰를 실행할 범위의 시작 오프셋 상위 32비트

      DWORD dwFileOfsLow,               //뷰를 실행할 범위의 시작 오프셋 하위 32비트

      SIZE_T dwBytesToMap);             //뷰를 실행할 범위의 크기

  

뷰의 메모리에서 범위를 지정하여 파일 갱신>>

 

BOOL FlushViewOfFile (                                   //반환값: 처리 성공 여부

      LPCVOID lpBaseAddr,                                //갱신할 영역 시작 주소

      DWORD dwNumberOfBytes);                        //갱신할 영역 크기

 

뷰 해제하기 >>

BOOL UnmapViewOfFil(                                    //반환값: 처리 성공 여부

      LPCVOID lpBaseAddr);                               //해체할 뷰의 시작주소

 

파일 매핑 객체 자체가 불 필요하게 될 경우엔 CloseHandle API로 닫기!!

 

 

이름붙은 파일 매핑 객체 핸들을 다른 프로세스에서 가져와 사용하기 >>

HANDLE OpenFileMapping(                               //반환값: 객체 핸들

      DWORD dwDesiredAccess,                         //필요한 접근 권한

      BOOL bInheritHandle,                                 //자식 프로세스에 상속할 것인가?

      LPCTSTR lpName);                                    //객체명  

[출처] 파일매핑|작성자 숙녀라면


'API & MFC > API & 시스템프로그래밍' 카테고리의 다른 글

이벤트  (0) 2010.01.24
세마포어  (0) 2010.01.24
Dll이란?  (0) 2010.01.24
파이프 추가내용  (0) 2010.01.20
Hooking  (0) 2010.01.15
Posted by 아몰라