---共有メモリを作成するためのプロセスを、およびデータの書き込み、
---次に、6Sをハング
---プロセスBは、共有メモリを開放します
--- Aの書き込みデータは、プロセスを読みます
--- B閉鎖プロセスの共有メモリ
共有メモリにデータを書き込む処理:
書式#include <iostreamの>
の#include <windows.hに>
する#include <WINNT.H>
書式#include <TCHAR.H>
書式#include <スレッド>
#define SPACENAME _T( "ShareMemory")
の#define MEMERYDATA _T( "我是数据")
の#define BUF_SIZE 4096
HANDLE HMAP = NULL;
ボイドreadMemeryThread(CHAR * STR){
}
int型のmain()
{
のstd :: COUT << "ProcessAにデータを書き込む準備ができています"。<<はstd ::てendl;
PszMapName = SPACENAME LPCTSTR;
CHARデータ[10] = "Iデータ";
LPTSTR pszData = LPTSTR(データ);
LPVOID pBuffer = NULL;
HMAP = :: CreateFileMapping関数(INVALID_HANDLE_VALUE、
NULL、
PAGE_READWRITE、
0、
BUF_SIZE、
pszMapName)。
IF(HMAP){
pBuffer = ::のMapViewOfFile(HMAP、FILE_MAP_ALL_ACCESS、0、0、BUF_SIZE)。
(pBuffer){もし
strcpy_s((CHAR *)pBuffer、strlenを(データ)+1、データ)。
std :: coutの<< "写入共享内存数据:" <<(CHAR *)pBuffer <<はstd ::てendl;
}
他{
STD :: COUT << "とwirteマップエラー:" <<のGetLastError()<<はstd :: ENDL。
}
スリープ(60000)。
}
他{
STD :: COUT << "とファイルMAPPエラーを作成する:" <<のGetLastError()<<はstd :: ENDL。
}
(pBuffer){もし
UnmapViewOfFile(pBuffer)。
pBuffer = NULL;
}
(HMAP){もし
CloseHandleを(HMAP)。
HMAP = NULL;
}
システム(「休止」)。
0を返します。
}
プロセスBは、共有データメモリを読み出します。
書式#include <windows.hに>
する#include <WINNT.H>
書式#include <TCHAR.H>
SPACENAME _Tのに#define( "ShareMemory")
の#define MEMERYDATA _T( "私のデータ")
HANDLE HMAP = NULL;
ボイドreadMemeryThread(CHAR * STR){
}
int型のmain()
{
のstd :: COUT << "ProcessB日付を読み取る準備ができています"。<<はstd ::てendl;
PszMapName = SPACENAME LPCTSTR;
CHARデータ[10] = "Iデータ";
LPTSTR pszData = LPTSTR(データ);
LPVOID pBuffer = NULL;
HMAP = OpenFileMapping(FILE_MAP_ALL_ACCESS、0、pszMapName)。
IF(HMAP == NULL){
のstd :: COUT << "オープンマップ誤差を有する:" <<のGetLastError()<<はstd :: ENDL。
}
他{
pBuffer = ::のMapViewOfFile(HMAP、FILE_MAP_ALL_ACCESS、0、0、0);
(pBuffer){もし
、strcpy_s((CHAR *)pBuffer、strlenを(データ)+ 1、データ)
std :: coutの<< "读取共享内存数据:" <<(CHAR *)pBuffer <<はstd ::てendl;
}
他{
STD :: COUT << "と読み出した地図誤り:" <<のGetLastError()<<はstd :: ENDL。
}
}
(pBuffer){もし
UnmapViewOfFile(pBuffer)。
}
(HMAP){もし
CloseHandleを(HMAP)。
HMAP = NULL;
}
システム(「休止」)。
0を返します。
}
ヒント:簡単な例は、後に改良され、_beginthreadexは、スレッドを作成するために使用する必要があります。最終用途_endthreadex