goldendict-ng/mouseover_win32/ThTypes.c

58 lines
1.5 KiB
C

#include "ThTypes.h"
HANDLE MMFHandle = 0;
TGlobalDLLData *GlobalData = NULL;
#ifdef __WIN64
HANDLE MMFHandle32 = 0;
TGlobalDLLData32 *GlobalData32 = NULL;
LPCSTR SHARE_NAME32 = "GoldenDictTextOutHookSharedMem";
LPCSTR SHARE_NAME = "GoldenDictTextOutHookSharedMem64";
#else
LPCSTR SHARE_NAME = "GoldenDictTextOutHookSharedMem";
#endif
void ThTypes_Init()
{
if (!MMFHandle) {
MMFHandle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(TGlobalDLLData), SHARE_NAME);
}
if (!MMFHandle) {
MMFHandle = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, 0, SHARE_NAME);
}
if (!GlobalData && MMFHandle != NULL)
GlobalData = MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
#ifdef __WIN64
if (!MMFHandle32) {
MMFHandle32 = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(TGlobalDLLData32), SHARE_NAME32);
}
if (!MMFHandle32) {
MMFHandle32 = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, 0, SHARE_NAME32);
}
if (!GlobalData32 && MMFHandle32 != NULL)
GlobalData32 = MapViewOfFile(MMFHandle32, FILE_MAP_ALL_ACCESS, 0, 0, 0);
#endif
}
void ThTypes_End()
{
if (GlobalData) {
UnmapViewOfFile(GlobalData);
GlobalData = NULL;
}
if (MMFHandle) {
CloseHandle(MMFHandle);
MMFHandle = 0;
}
#ifdef __WIN64
if (GlobalData32) {
UnmapViewOfFile(GlobalData32);
GlobalData32 = NULL;
}
if (MMFHandle32) {
CloseHandle(MMFHandle32);
MMFHandle32 = 0;
}
#endif
}