
#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();
}



