DLL 데이터 공유

IPC종류는 아니지만 DLL로 데이터를 공유할 수 있다.

100메가의 리소스를 DLL로 공유한다면 10개의 프로그램이 실행되어도 100메가의 용량은 공유되기 때문에 늘어나지 않는다.

DLL을 통한 데이터 공유는 간단하다.

#pragma  data_seg(".MyShare")

    // CDllServer 정적변수 m_iSum와 sRef를 공유한다.

    int    CDllServer::m_iSum = 0;

    int sRef = 0;

#pragma  data_seg()

#pragma  comment( linker, "/SECTION:.MyShare,RWS")

#pragma  data_seg(".MyShare")
공유 데이터 세그먼트의 시작을 " .MyShare" 로 선언합니다. 이름은 자유롭게 지을수 있습니다.

#pragma  data_seg()
공유 데이터 세그먼트의 종료입니다.

#pragma  comment( linker, "/SECTION:.MyShare,RWS")
 ".MyShare" 세그먼트의 속성을 읽기(R), 쓰기(W), 공유(S)로 지정합니다.
실행 속성은 E입니다.

여기서는 두 개의 변수를 공유하고 있습니다.

    int    CDllServer::m_iSum = 0;
    int sRef = 0;

dll_server.dll을 공유하는 dll_client.exe를 계속 실행하면 value는 3씩 증가하고, Ref는 1씩 증가한다.
샘플을 실행 할려면 dll_server.dll 파일을 dll_client.exe로 복사한다.

프로젝트:  DLL_Share.zip

 

참조 :
Minor League님 홈피

http://effortman.tistory.com/11