c++共享内存(转载)
进程间通信 共享内存对于连个不同的进程之间的通信,共享内存是⼀种⽐较好的⽅式,⼀个进程把数据发送到共享内存中,另⼀个进程可以读取改数据,简单记录⼀下代码
1#define BUF_SIZE 256
2 TCHAR szName[]=TEXT("Global\\YourFileMappingObject");    //指向同⼀块共享内存的名字
3
4int SetFileName(LPCTSTR str)
5 {
6    HANDLE hMapFile;
7    LPCTSTR pBuf;
8
9    hMapFile = CreateFileMapping(
10            INVALID_HANDLE_VALUE,    // use paging file
11            NULL,                    // default security
12            PAGE_READWRITE,          // read/write access
130,                      // maximum object size (high-order DWORD)
14            BUF_SIZE,                // maximum object size (low-order DWORD)
15            szName);                // name of mapping object
16
17if (hMapFile == NULL)
18    {
19        _tprintf(TEXT("Could not create file mapping object (%d).\n"),
20        GetLastError());
21return0;
22    }
23    pBuf = (LPTSTR) MapViewOfFile(hMapFile,  // handle to map object
24            FILE_MAP_ALL_ACCESS, // read/write permission
250,
260,
27            BUF_SIZE);
28
29if (pBuf == NULL)
30    {
31        _tprintf(TEXT("Could not map view of file (%d).\n"),
32        GetLastError());
33
34        CloseHandle(hMapFile);
35
36return0;
37    }
38
39    memcpy((PVOID)pBuf, str, BUF_SIZE);
40return1;
41 }
42
43 LPCTSTR GetBuffer()
44 {
45    HANDLE hMapFile;
46    LPCTSTR pBuf;
47
48    hMapFile = CreateFileMapping(
49            INVALID_HANDLE_VALUE,    // use paging file
50            NULL,                    // default security
51            PAGE_READWRITE,          // read/write access
520,                      // maximum object size (high-order DWORD)
53            BUF_SIZE,                // maximum object size (low-order DWORD)
54            szName);                // name of mapping object
55
56if (hMapFile == NULL)
57    {
58        _tprintf(TEXT("Could not create file mapping object (%d).\n"),
59            GetLastError());
60return NULL;
61    }
62    pBuf = (LPTSTR) MapViewOfFile(hMapFile,  // handle to map object
63            FILE_MAP_ALL_ACCESS, // read/write permission
640,
650,
66            BUF_SIZE);
67
68if (pBuf == NULL)
69    {
70        _tprintf(TEXT("Could not map view of file (%d).\n"),
71                GetLastError());
72
73        CloseHandle(hMapFile);
74return NULL;
75    }
76return pBuf; 77 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。