OpenSemaphore alleine genügt nicht, du musst sie/ihn/es

mittels WaitForSingleObject auch noch reservieren... sinnigerweise würdest du dann bei CreateSemaphore den lInitialCount auf 1 setzen... und da es eh ein "Counter" von 0 bis 1 wird, könntest du gleich einen
Mutex verwenden (CreateMutex und Konsorten) - ein spezialisierter Semaphore von 0 bis 1...