Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "SharedMemory.hpp"
- void* pData = NULL;
- HANDLE hMapFile = NULL;
- std::string SharedMemoryName = "Local\\GLHookMap";
- GL_EXTERN bool __stdcall CreateSharedMemory()
- {
- if ((hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, MapSize, SharedMemoryName.c_str())) == NULL)
- {
- return false;
- }
- if ((pData = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, MapSize)) == NULL)
- {
- CloseHandle(hMapFile);
- return false;
- }
- return true;
- }
- GL_EXTERN bool __stdcall OpenSharedMemory()
- {
- if ((hMapFile = OpenFileMappingA(FILE_MAP_ALL_ACCESS, false, SharedMemoryName.c_str())) == NULL)
- {
- std::cout<<"\nCould Not Open Shared Memory Map.\n";
- return false;
- }
- if ((pData = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, MapSize)) == NULL)
- {
- CloseHandle(hMapFile);
- std::cout<<"\nCould Not Map View Of File.\n";
- return false;
- }
- std::cout<<"\nInter-Process Communication Successful.\n";
- return true;
- }
- GL_EXTERN bool __stdcall UnMapSharedMemory()
- {
- if (hMapFile != NULL)
- {
- UnmapViewOfFile(pData);
- CloseHandle(hMapFile);
- return true;
- }
- return false;
- }
- GL_EXTERN bool __stdcall SharedMemoryBusy()
- {
- int* Data = static_cast<int*>(pData);
- return Data[1] > 0 ? true : false;
- }
- GL_EXTERN void* __stdcall RequestSharedMemory()
- {
- for (int Success = 0; Success < 50; ++Success)
- {
- if (SharedMemoryBusy())
- Sleep(10);
- else
- break;
- }
- return pData;
- }
- GL_EXTERN bool __stdcall SharedMemoryReturned()
- {
- int* Data = static_cast<int*>(pData);
- return Data[1] == 2 ? true : false;
- }
- GL_EXTERN bool __stdcall SharedDataFetched()
- {
- for (int Success = 0; Success < 50; ++Success)
- {
- if (SharedMemoryReturned())
- return true;
- if (!SharedMemoryBusy())
- return false;
- Sleep(10);
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement