// main.c // #ifdef _WIN32 #define _CRT_SECURE_NO_WARNINGS #include #include "../Win32/w32def.h" #define sleep(sec) Sleep(sec * 1000) #endif // _WIN32 #include #include "src/defines.h" #include "src/gfaipc.h" #define _UNUSED(v) v = v typedef struct _TESTSTRUCT1 { int nCounter1; int nCounter2; }TESTSTRUCT1, *LPTESTSTRUCT1; typedef const TESTSTRUCT1 *LPCTESTSTRUCT1; typedef struct _TESTSTRUCT2 { int nCounter1; int nCounter2; }TESTSTRUCT2, *LPTESTSTRUCT2; typedef const TESTSTRUCT2 *LPCTESTSTRUCT2; #define _UUID_TESTSTRUCT1 "8c2e723a-5556-4d90-b5ed-bba8575b6f28" #define _UUID_TESTSTRUCT2 "8d961df7-96c4-45cd-8dd7-346227782ac0" int main(int argc, char *argv[]) { HSHM hShm1, hShm2; LPTESTSTRUCT1 p1 = NULL; LPTESTSTRUCT2 p2 = NULL; _UNUSED(argc); _UNUSED(argv); GfaIpcDumpSHMROT(); hShm1 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1"); GfaIpcDumpSHMROT(); hShm2 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT2, sizeof(TESTSTRUCT2), 1, "Teststruct 2"); GfaIpcDumpSHMROT(); if(hShm1 && hShm2) { p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1); TRACE("Get pointer: %p\n", p1); p2 = (LPTESTSTRUCT2)GfaIpcAcquirePointer(hShm2); TRACE("Get pointer: %p\n", p2); TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2); TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2); GfaIpcLockSHM(hShm1); p1->nCounter1++; p1->nCounter2--; GfaIpcUnlockSHM(hShm1); TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2); TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2); GfaIpcLockSHM(hShm2); p2->nCounter1--; p2->nCounter2++; GfaIpcUnlockSHM(hShm2); TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2); TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2); GfaIpcReleasePointer(hShm1, p1); GfaIpcReleasePointer(hShm2, p2); GfaIpcReleaseSHM(hShm1); GfaIpcReleaseSHM(hShm2); } //uuid_t uuid; //_uuid_parse("8c2e723a-5556-4d90-b5ed-bba8575b6f28", &uuid); return 0; }