잠토의 잠망경

Paging File을 이용하여 데이터값 공유하기 본문

공부/API

Paging File을 이용하여 데이터값 공유하기

잠수함토끼 2008. 9. 7. 16:46
Memshare01.cpp

#undef UNICODE

#include 
#include 

#define MAXSHAREMEMORY	1024

CHAR buf[256];

void MMFFunction()
{
	//CreateFileMapping: Paging File에 공유영역을 설정하여 데이터를 공유하고 있다.
	HANDLE hMMF=CreateFileMapping(INVALID_HANDLE_VALUE, 
					NULL,
					PAGE_READWRITE,
					0,
					MAXSHAREMEMORY,
					"MEMAHREMAPPING");

	if(hMMF ==INVALID_HANDLE_VALUE)
	{
		printf("CreateFileMapping error\n");
		return;
	}
	//MapViewOfFile: 파일의 일부분(view)을 매핑한다.
	PCHAR ptr= (PCHAR)MapViewOfFile(hMMF,
				FILE_MAP_ALL_ACCESS,
				0,
				0,
				MAXSHAREMEMORY);
	if(ptr==NULL)
	{
		printf("MapViewOfFile error\n");
		return;
	}
	
	printf("MMF Pointer :%d\n",ptr); // 같지 않다.
	
	while(1){
		printf("input->: ");
		scanf("%s",buf);
		wsprintf(ptr,"%s",buf);
		printf("\n%s\n",buf);
	}
}

int main(void)
{
	MMFFunction();
	return 0;
}
Memshare02.cpp


#undef UNICODE

#include 
#include 

#define MAXSHAREMEMORY	1024

CHAR buf[256];


void MMFFunction()
{
	//CreateFileMapping: Paging File에 파일 매핑 오브젝트를 만들어 값을 공유한다.
	HANDLE hMMF=CreateFileMapping(INVALID_HANDLE_VALUE, //==0xFFFFFFFF
		NULL,
		PAGE_READWRITE,
		0,
		MAXSHAREMEMORY,
		"MEMAHREMAPPING");
	if(hMMF ==INVALID_HANDLE_VALUE)
	{
		printf("CreateFileMapping error\n");
		return;
	}

	PCHAR ptr= (PCHAR)MapViewOfFile(hMMF,
		FILE_MAP_ALL_ACCESS,//FILE_MAP_WRITE | FILE_MAP_READ
		0,
		0,
		MAXSHAREMEMORY);
	
	if(ptr==NULL)
	{
		printf("MapViewOfFile error\n");
		return;
	}

	printf("MMF Pointer :%d\n",ptr);	// 같지 않다.
	while(1){
	printf("input> ");
	scanf("%s",buf);//dummy buffer
	printf("\n%s\n",ptr);//매핑 파일에서 값을 출력한다.
	}
}

int main(void)
{
	MMFFunction();
	return 0;
}
Comments