2.4.3.7.3. Windows Semaphore Interface
HANDLE CreateSemaphore (LPSECURITY_ATTRIBUTE lpsa,
                        LONG cSemInitial,
                        LONG cSemMax,
                        LPTSTR lpszSemName);
HANDLE OpenSemaphore (DWORD dwDesiredAccess,
                      BOOL bInheritHandle,
                      LPCTSTR lpName);

DWORD WaitForSingleObject (
  HANDLE hHandle,
  DWORD dwMilliseconds);

BOOL ReleaseSemaphore (HANDLE hSemaphore,
                       LONG cRelease,
                       LPLONG lplPrevious);