/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */ /* */ /* CLSSharedMemory 共有メモリクラス */ /* */ /* 共有メモリの操作を簡易化すると同時に共有メモリに関するWindows/UNIX間の */ /* APIの差異を吸収し操作の統一化を計る */ /* */ /* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */ #ifndef __SHAREDMEMORY_CLS_H #define __SHAREDMEMORY_CLS_H //_/_/_/_/_/_/_/_/_/_/_// // / // include/定数定義 / // / //_//_/_/_/_/_/_/_/_/_/_// #include #include #include "GG_DEF.h" #ifdef WIN32 #include typedef int key_t; #else #include #include #include #include #endif class CLSSharedMemory { private: #ifdef WIN32 HANDLE hSharedMemory; //共有メモリハンドル HANDLE hLockMutex; //共有メモリ書き込みロック用ミューテックスハンドル #else int iSharedMemory; //共有共有メモリハンドル int iLockMutex; //共有メモリ書き込みロック用ミューテックスハンドル #endif key_t keySharedMemoryID; //共有メモリID key_t keyLockMutexID; //ロック用ミューテックスID long lSize; //共有メモリサイズ void * pData; //共有メモリ BOOL blMutexFlg; //ミューテックスロック中かどうかのチェックフラグ int iErrorNo; //errno char cErrorMsg[256]; //Errメッセージ public: //コンストラクタ CLSSharedMemory(){ #ifdef WIN32 hSharedMemory = NULL; hLockMutex = NULL; #else iSharedMemory = 0; iLockMutex = 0; #endif pData = NULL; lSize = 0; keySharedMemoryID = 0; keyLockMutexID = 0; blMutexFlg = FALSE; iErrorNo = 0; *(cErrorMsg) = '\0'; } //デストラクタ ~CLSSharedMemory(); //共有メモリオープンチェック BOOL checkSharedMemory(); // BOOL SetSharedMemoryID(key_t inputSharedMemoryID); BOOL SetLockMutexID(key_t inputLockMutexID); void * CreateSheredMemory(long memSize); void * CreateSheredMemory(key_t inputSharedMemoryID,long memSize); void * OpenSheredMemory(); void * OpenSheredMemory(key_t inputSharedMemoryID); void * OpenWriteSheredMemory(); void * OpenWriteSheredMemory(key_t inputSharedMemoryID); void CloseSheredMemory(); BOOL WriteSheredMemoryStart(); BOOL WriteSheredMemoryEnd(); BOOL WriteSheredMemoryCheck(); int getErrorNo(){ return iErrorNo; } const char * getErrorMsg(){ return cErrorMsg; } #ifndef WIN32 int getSharedMemory(){ return iSharedMemory;} #else int getSharedMemory(){ return 0;} #endif }; #endif