dll에서 여러개의 Data를 Main으로 넘길려고 합니다.
현재는 Record로 정의한다음 레코드로 넘겨주는데,
이것을 메모리맵을 사용해서 메인에서 읽어오려고 합니다.
dll에서 CreateFileMapping / MapViewOfFile를 통해서
Data를 메모리에 쓰고,
Main에서 OpenFileMapping /MapViewOfFile를 통해서 Data를 읽어오려고
하는데,, 막상 Data를 읽어올때 OpenFileMapping의 리턴값으로 받는 핸들이
0으로 나오네요...
dll에서 메모리맵의 사용은 일반 exe화일에서 쓰는 메모리맵의 사용법과
다른가요?
지금 exe에서 샘플로 테스트 할때는 잘 되거든요.
고수님들 좀 알려주세요
initialization
hMapObject := CreateFileMapping(INVALID_HANDLE_VALUE,
nil,
PAGE_READWRITE,
0,
1024,
'IDP');
if GetLastError = ERROR_ALREADY_EXISTS then Halt;
pMapView1 := MapViewOfFile(hMapObject, FILE_MAP_WRITE, 0, 0, 1024);
finalization
UnmapViewOfFile(pMapView1);
......
en.
// 원하는곳에 생성시킨 공유 메모리에 'IDP'로 다시 맵핑해보시면...원인파악은 될듯.... ^^:
hMapOpenObject := OpenFileMapping(FILE_MAP_ALL_ACCESS, false, 'IDP');
pMapView2 := MapViewOfFile(hMapOpenObject, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
짧은지식.