Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[6254] [답변] CLOSEMAN/ DLL 에서 다른 DLL 의 자료 추가질문
dashform [ ] 824 읽음    1999-06-07 10:41
안녕하세요 ? 좋/은/생/각 입니다.

날씨가 많이 후덥지근 합니다...

우선 결론적으로 말한다면 제가 알기론 불가능 합니다.
95에서는 원천적으로 프로그램간에 메모리를 공유할 수는 없습니다.
시스템이 프로그램간에 완전한 장막을 쳐서가상 논리적 주소공간에
가두기 때문이죠

컴퓨터의 모든 자원이 마치 하나의 프로그램에 독점된 것 처럼
완전히 가장하기 때문입니다.

따라서 윈31의 DLL을 통한 메모리 공유가능 했던 것은 윈도우95에
와서는 불가능합니다.
즉, DLL 하나를 여러 프로그램에서 사용하여 이를 통해 주소 또는 데이타를
공유하는 것이 불가능 하다는 애기죠

왜냐하면 여러 프로그램이 하나의 DLL을 로드한다 하더라도
로드할때 마다 DLL은 로드하는 프로그램의 가상 공간에 소유되기 때문입니다.
즉, 여러번 로드된 DLL간에는 주소공간이 틀리다는 것 입니다.
즉, 물리적 주소는 없고 시스템이 맵핑한 논리적 연속 주소만이
존재하기 때문입니다.

따라서 데이타를 공유하는 방법은 DDE, OLE, 그리고 물리적 메모리를 예약하거나
메핑해서 사용하도록 되어있습니다.

그리고 메세지를 이용하는 방법이 있습니다.
Thunk모듈을 제작할 때 사용했던 건데요...

아시겠지만 윈도우95에서는 dll에서 데이타 담아서, 그것을 exe파일에다가 메세지에 실어서
보내게 되면 안됩니다. 후후 이유인 즉은 위에서 언급된 내용이죠 dll을 통한 메모리
공유가 윈도우95(32bit)에서는 불가능하죠. 이렇게 해서 MS사에서 이런경우를 대비해서
특별한 메세지 타입을 만들어 놓았습니다.
보내야 할 데이타를 WM_CopyData라는 메세지에 담아서 보내는 방법이 있습니다.
이것에 대해서는 api책을 참고 하세요

존 코딩 많이 하세요...
                       꿈의 언덕에서   /좋/은/생/각/


+ -

관련 글 리스트
6254 [답변] CLOSEMAN/ DLL 에서 다른 DLL 의 자료 추가질문 dashform 824 1999/06/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.