#include #include #include #include struct MS { int UL; int IZ; char M[5]; }; #define MS_VEL sizeof(struct MS) HANDLE pun, prazan, pisi; HANDLE SegZajMem; struct MS *p; void zauzmi(){ pun = CreateSemaphore(NULL, 5, 5, "PUN"); prazan = CreateSemaphore (NULL, 0, 5, "PRAZAN"); pisi = CreateSemaphore (NULL, 1, 1, "PISI"); if (pun == NULL || prazan == NULL || pisi == NULL) { printf("CreateSemaphore error: %d\n", GetLastError()); } SegZajMem = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, MS_VEL, "medjuspremnik"); if (SegZajMem == NULL) { printf("Could not create file mapping object (%d).\n", GetLastError()); return; } p = MapViewOfFile(SegZajMem, FILE_MAP_ALL_ACCESS, 0, 0, MS_VEL); if (p == NULL) { printf("Could not map view of file (%d).\n", GetLastError()); return; } } void oslobodi(){ CloseHandle(pun); CloseHandle(prazan); CloseHandle(pisi); UnmapViewOfFile(p); CloseHandle(SegZajMem); }