#include "pch_msc.hpp" #ifdef _WIN32 #include "winhelper.h" #include void* dlopen(const char* lib, int) { return LoadLibraryA(lib); } void* dlsym(void* handle, const char* proc) { return reinterpret_cast(GetProcAddress(static_cast(handle), proc)); } int dlclose(void* handle) { return FreeLibrary(static_cast(handle)); } int dlerror() { return GetLastError(); } SharedMemory::SharedMemory(const char* fname) { this->hFileMap = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 2, fname); if (this->hFileMap) this->pData = MapViewOfFile(this->hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 2); else this->pData = NULL; } void SharedMemory::FreeMemoryMap() { if (this->hFileMap) if (this->pData) UnmapViewOfFile(this->pData); if (this->hFileMap) CloseHandle(this->hFileMap); } #ifndef __USE_STD_SEMAPHORE__ A_Semaphore::A_Semaphore(bool v = false) { native_handle = CreateSemaphore(NULL, v, 1, NULL); } void A_Semaphore::acquire() { WaitForSingleObject(native_handle, INFINITE); } void A_Semaphore::release() { ReleaseSemaphore(native_handle, 1, NULL); } A_Semaphore::~A_Semaphore() { CloseHandle(native_handle); } #endif #endif