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);