관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

MapViewOfFile 본문

API 관련/Win32 API 함수

MapViewOfFile

님투 2007. 11. 8. 23:03
반응형

MapViewOfFile

호출 프로세스의 address 공간에 파일 매핑 오브젝트의 뷰를 매핑 합니다.

베이스 주소를 지정하려면 , MapViewOfFileEx 함수를 사용합니다.

PVOID MapViewOfFile(
    HANDLE hMappingObject,     // 매핑 오브젝트의 핸들
    DWORD  dwDesiredAccess,    // 데이터의 액세스 방법
    DWORD  dwFileOffsetHigh,   // 오프셋의 상위32비트
    DWORD  dwFileOffsetLow,    // 오프셋의 하위32비트
    SIZE_T dwNumberOfByteToMap // 매핑을 하는 아르바이트수
);

KERNEL32.DLL

인수

hMappingObject

파일 매핑 오브젝트의 핸들을 지정합니다.이 핸들은 CreateFileMapping 함수 또는 OpenFileMapping 함수에 의해서 돌려주어집니다.

dwDesiredAccess

데이터에의 액세스의 타입을 지정합니다.이하의 값의 어느 쪽인가에 됩니다.

의미
0x00000001 (FILE_MAP_COPY) 카피 온 라이트 액세스

hMappingObject 파라미터로 지정되는 파일 매핑 오브젝트가 PAGE_WRITECOPY 보호 속성을 지정해 작성되어 한편, 이 플래그를 지정했을 경우는, 이 뷰에 기입을 하면, 페이지가 자동적으로 스왑 되고, 오리지날의 데이터 파일은 변경되지 않습니다.

Windows 95/98/Me: 파일 매핑 오브젝트가 PAGE_WRITECOPY 보호 속성을 가지고 있지 않은 경우에는, 이 함수는 에러를 돌려줍니다.

1개의 매핑 오브젝트를 복수의 프로세스간에 공유하고 있는 경우에는, 어느 프로세스의 뷰에 기입을 행하면, 다른 프로세스의 뷰에도 반영됩니다.오리지날 파일의 데이터는 변화하지 않습니다.

Windows NT/2000/XP: 파일 매핑 오브젝트의 보호 속성의 제한은 없습니다.카피 온 라이트 액세스의 지정은, 어느 보호 속성을 가지는 뷰에 대해서도 유효합니다.

1개의 매핑 오브젝트를 복수의 프로세스간에 공유하고 있는 경우에, 어느 프로세스의 뷰에 기입을 행해도, 다른 프로세스의 뷰는 변경되지 않습니다.오리지날 파일의 데이터는 변화하지 않습니다.

0x00000002 (FILE_MAP_WRITE) 읽고 쓰기 액세스

hMappingObject 파라미터로 지정되는 파일 매핑 오브젝트는 PAGE_READWRITE 보호 속성을 지정해 작성된 것이 아니면 안됩니다.

0x00000004 (FILE_MAP_READ) 읽기 전용 액세스

hMappingObject 파라미터로 지정되는 파일 매핑 오브젝트는 PAGE_READWRITE 또는 PAGE_READONLY 보호 속성을 지정해 작성된 것이 아니면 안됩니다.

0x000F001F (FILE_MAP_ALL_ACCESS) FILE_MAP_WRITE (와)과 같다
dwFileOffsetHigh

매핑 개시 오프셋의 상위32비트를 지정합니다.

dwFileOffsetLow

매핑 개시 오프셋의 하위32비트를 지정합니다.오프셋은 할당 단위의 배수가 아니면 안됩니다.할당 단위를 취득하려면 GetSystemInfo 함수에 의해서 취득된다 SYSTEM_INFO 구조체의 dwAllocationGranularity 멤버를 참조합니다.

dwNumberOfByteToMap

맵 하는 파일의 사이즈를 아르바이트 단위로 지정합니다. 0 (을)를 지정하면, 매핑 오브젝트 전체가 지정됩니다.

반환값

성공하면, 매핑 된 뷰의 개시 주소가 돌아갑니다.

실패하면 0 (NULL) 하지만 돌아갑니다.확장 에러 정보를 취득하려면 , GetLastError 함수를 사용합니다.

해설

단일의 파일 매핑 오브젝트로부터 매핑 되는 복수의 뷰에서는, 일관성(coherency)이 보증됩니다.

ReadFile 함수나 WriteFile 등에서 액세스 되는 파일에 대해서는, 그 매핑 된 뷰의 일관성은 보증되지 않습니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형

'API 관련 > Win32 API 함수' 카테고리의 다른 글

mciSendString(A)  (0) 2007.11.08
mciGetErrorString(A)  (0) 2007.11.08
lstrcat(A)  (0) 2007.11.08
LoadIcon(A)  (0) 2007.11.08
LoadCursorFromFile(A)  (0) 2007.11.08
Comments