안녕하세요 ? 좋/은/생/각 입니다.
날씨가 많이 후덥지근 합니다...
우선 결론적으로 말한다면 제가 알기론 불가능 합니다.
95에서는 원천적으로 프로그램간에 메모리를 공유할 수는 없습니다.
시스템이 프로그램간에 완전한 장막을 쳐서가상 논리적 주소공간에
가두기 때문이죠
컴퓨터의 모든 자원이 마치 하나의 프로그램에 독점된 것 처럼
완전히 가장하기 때문입니다.
따라서 윈31의 DLL을 통한 메모리 공유가능 했던 것은 윈도우95에
와서는 불가능합니다.
즉, DLL 하나를 여러 프로그램에서 사용하여 이를 통해 주소 또는 데이타를
공유하는 것이 불가능 하다는 애기죠
왜냐하면 여러 프로그램이 하나의 DLL을 로드한다 하더라도
로드할때 마다 DLL은 로드하는 프로그램의 가상 공간에 소유되기 때문입니다.
즉, 여러번 로드된 DLL간에는 주소공간이 틀리다는 것 입니다.
즉, 물리적 주소는 없고 시스템이 맵핑한 논리적 연속 주소만이
존재하기 때문입니다.
따라서 데이타를 공유하는 방법은 DDE, OLE, 그리고 물리적 메모리를 예약하거나
메핑해서 사용하도록 되어있습니다.
그리고 메세지를 이용하는 방법이 있습니다.
Thunk모듈을 제작할 때 사용했던 건데요...
아시겠지만 윈도우95에서는 dll에서 데이타 담아서, 그것을 exe파일에다가 메세지에 실어서
보내게 되면 안됩니다. 후후 이유인 즉은 위에서 언급된 내용이죠 dll을 통한 메모리
공유가 윈도우95(32bit)에서는 불가능하죠. 이렇게 해서 MS사에서 이런경우를 대비해서
특별한 메세지 타입을 만들어 놓았습니다.
보내야 할 데이타를 WM_CopyData라는 메세지에 담아서 보내는 방법이 있습니다.
이것에 대해서는 api책을 참고 하세요
존 코딩 많이 하세요...
꿈의 언덕에서 /좋/은/생/각/
|