#include "WinSMTool.h" using namespace jbxwl; CWinSharedMemory::CWinSharedMemory(void) { // メモリマップドファイルの生成 m_hMapping = ::CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, 1024, _T("WinSharedMemory")); //HANDLE)0xffffffff, // 共有メモリの場合は 0xffffffffを指定 //NULL, // セキュリティ属性.NULLでよい //PAGE_READWRITE, // プロテクト属性を読み書き可能に指定 //0, // ファイルサイズの上位32ビット //1024, // ファイルサイズの下位32ビット //_T("SharedMemory") // メモリマップドファイルの名前 // プロセス内のアドレス空間にファイルのビューをマップ m_pMappingView = ::MapViewOfFile(m_hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 1024); // ミューテックスオブジェクトの生成 m_pMutex = new CMutex(FALSE, _T("UKFileMappingTest_Mutex")); } CWinSharedMemory::~CWinSharedMemory(void) { BOOL b = ::UnmapViewOfFile(m_pMappingView); ::CloseHandle(m_hMapping); delete m_pMutex; } void CWinSharedMemory::get() { // 共有メモリの内容を取得 m_pMutex->Lock(INFINITE); //m_strEdit1 = (LPTSTR)m_pMappingView; m_pMutex->Unlock(); //UpdateData(FALSE); } void CWinSharedMemory::put() { //UpdateData(TRUE); // 共有メモリへ書き込む m_pMutex->Lock(INFINITE); //memcpy(m_pMappingView, (LPCTSTR)m_strEdit1, m_strEdit1.GetLength() + 1); m_pMutex->Unlock(); }