17#ifndef __TBB_machine_windows_api_H
18#define __TBB_machine_windows_api_H
24#if _WIN32_WINNT < 0x0600
27#if !defined(WINBASEAPI) || (_WIN32_WINNT < 0x0501 && _MSC_VER == 1400)
28#define __TBB_WINBASEAPI extern "C"
30#define __TBB_WINBASEAPI WINBASEAPI
32__TBB_WINBASEAPI BOOL WINAPI TryEnterCriticalSection( LPCRITICAL_SECTION );
33__TBB_WINBASEAPI BOOL WINAPI InitializeCriticalSectionAndSpinCount( LPCRITICAL_SECTION, DWORD );
35#define InitializeCriticalSectionEx inlineInitializeCriticalSectionEx
36#define CreateSemaphoreEx inlineCreateSemaphoreEx
37#define CreateEventEx inlineCreateEventEx
38inline BOOL WINAPI inlineInitializeCriticalSectionEx( LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD )
40 return InitializeCriticalSectionAndSpinCount( lpCriticalSection, dwSpinCount );
42inline HANDLE WINAPI inlineCreateSemaphoreEx( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName, DWORD, DWORD )
44 return CreateSemaphore( lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName );
46inline HANDLE WINAPI inlineCreateEventEx( LPSECURITY_ATTRIBUTES lpEventAttributes, LPCTSTR lpName, DWORD dwFlags, DWORD )
48 BOOL manual_reset = dwFlags&0x00000001 ? TRUE : FALSE;
49 BOOL initial_set = dwFlags&0x00000002 ? TRUE : FALSE;
50 return CreateEvent( lpEventAttributes, manual_reset, initial_set, lpName );
54#if defined(RTL_SRWLOCK_INIT)
55#ifndef __TBB_USE_SRWLOCK
57#define __TBB_USE_SRWLOCK 0
62#error tbb/machine/windows_api.h should only be used for Windows based platforms