Game Dev/Article

Memory Mapped File

AKer 2008. 7. 22. 10:58
반응형
1. First Process
#include 
#include 
#include 

#define BUF_SIZE 256

TCHAR szName[]=TEXT("MyFileMappingObject");
TCHAR szMsg[]=TEXT("Message from first process");

void main()
{
   HANDLE hMapFile;
   LPCTSTR pBuf;
   hMapFile = CreateFileMapping(
                 INVALID_HANDLE_VALUE,    // use paging file
                 NULL,                    // default security
                 PAGE_READWRITE,          // read/write access
                 0,                       // max. object size
                 BUF_SIZE,                // buffer size 
                 szName);                 // name of mapping object
 
   if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE)
   {
      printf("Could not create file mapping object (%d).\n", GetLastError());
      return;
   }

   pBuf = (LPTSTR) MapViewOfFile(hMapFile,   // handle to map object
                        FILE_MAP_ALL_ACCESS, // read/write permission
                        0,                  
                        0,                  
                        BUF_SIZE);          
 
   if (pBuf == NULL)
   {
      printf("Could not map view of file (%d).\n", GetLastError());
      return;
   }
  
   CopyMemory((PVOID)pBuf, szMsg, strlen(szMsg));
   getch();
   UnmapViewOfFile(pBuf);
   CloseHandle(hMapFile);
}




2. Second Process
#include 
#include 
#include 
#include 

#define BUF_SIZE 256

TCHAR szName[]=TEXT("MyFileMappingObject");

void main()
{
   HANDLE hMapFile;
   LPCTSTR pBuf;
   hMapFile = OpenFileMapping(
                   FILE_MAP_ALL_ACCESS,   // read/write access
                   FALSE,                 // do not inherit the name
                   szName);               // name of mapping object
 
   if (hMapFile == NULL)
   {
      printf("Could not open file mapping object (%d).\n", GetLastError());
      return;
   }
 
   pBuf = MapViewOfFile(hMapFile,    // handle to mapping object
               FILE_MAP_ALL_ACCESS,  // read/write permission
               0,                   
               0,                   
               BUF_SIZE);                  
 
   if (pBuf == NULL)
   {
      printf("Could not map view of file (%d).\n", GetLastError());
      return;
   }

   MessageBox(NULL, pBuf, TEXT("Process2"), MB_OK);
   UnmapViewOfFile(pBuf);
   CloseHandle(hMapFile);
}
반응형

'Game Dev > Article' 카테고리의 다른 글

프로그램 내 특정 윈도우 찾기  (0) 2008.07.22
EnumWindow  (0) 2008.07.22
Kill Process  (0) 2008.07.18
Capture Screen  (0) 2008.06.16