한 걸음씩..

서로 다른 프로세스 끼리 데이터 공유하기 (Memory Mapped File) 본문

프로그래밍

서로 다른 프로세스 끼리 데이터 공유하기 (Memory Mapped File)

smdy0426 2013. 7. 15. 10:19
반응형


서로 다른 프로세스 끼리 (서로 다른 어플리케이션 또는 서비스)

데이터를 공유하는 방법 중 하나로 MMF(Memory Mapped File)을 사용할 수 있다!!!

 

1. 첫 번째 프로세스

 
// "SH_MEM"라는 이름의 크기가 1024 이며, 읽고 쓰기가 가능한 상태로 이름의 메모리 객체를 생성한다.
HANDLE hMapping = ::CreateFileMapping (INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0,
1024, "SH_MEM");
 
// 생성된 메모리 객체에 접근하여 시작 위치를 얻어온다.
LPVOID lpData = ::MapViewOfFile (hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
 

2. 두 번째 프로세스
 
// 이미 생성된 "SH_MEM"라는 메모리 객체를 Open 한다.
HANDLE hMapping = ::OpenFileMapping (FILE_MAP_ALL_ACCESS, FALSE, "SH_MEM");
 
// Open된 메모리 객체에 접근하여 시작 위치를 얻어온다.
LPVOID lpData = ::MapViewOfFile (hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
 
3. 모든 프로세스
 
// 모든 작업이 끝난 후 접근했던 메모리객체를 연관성을 끊는다.
::UnmapViewOfFile (lpData);
 
// 공유메모리를 삭제한다.
::CloseHandle (hMapping);

 

 

http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=322

 

 

ps. 서비스와 어플리케이션이 데이터를 주고 받으려면

Global Name을 사용해야 하며 어플리케이션 쪽에서 MMF 를 만들고 서비스에서 열어야 한다.



반응형

'프로그래밍' 카테고리의 다른 글

드라이버 설치할 때 INF 에서 OS 버전 구분하기  (0) 2013.07.15
WIN7 UAC 관련 - 메니페스트 설정  (0) 2013.07.15
[WindowsRT] Windows Image 배포  (0) 2012.10.30
계산기 (후위표현식)  (0) 2011.10.17
reverse  (0) 2011.10.17