165 ULONG AllowedFlags = 0x07FFFFFF;
170 ok(
Status == ExpectedStatus,
"Wrong Status (0x%lx) for Flags 0x%lx\n",
231 skip(
"RtlInitializeCriticalSectionEx not available.\n");
241 printf(
"ThreadProc1 starting\n");
246 printf(
"ThreadProc1 waiting\n");
248 printf(
"ThreadProc1 returned from wait\n");
261 printf(
"ThreadProc2 starting\n");
266 printf(
"ThreadProc2 waiting\n");
268 printf(
"ThreadProc2 returned from wait\n");
279 DWORD dwThreadId1, dwThreadId2;
392 printf(
"g_VerInfo: %lu.%lu.%lu ('%s')\n ",
FN_RtlInitializeCriticalSectionEx * pfnRtlInitializeCriticalSectionEx
HANDLE hEventThread1Ready
RTL_CRITICAL_SECTION CritSect
HANDLE hEventThread2Ready
static DWORD WINAPI ThreadProc1(_In_ LPVOID lpParameter)
static void Test_Acquire(void)
static DWORD WINAPI ThreadProc2(_In_ LPVOID lpParameter)
NTSTATUS NTAPI FN_RtlInitializeCriticalSectionEx(_Out_ PRTL_CRITICAL_SECTION CriticalSection, _In_ ULONG SpinCount, _In_ ULONG Flags)
static void Test_Init(void)
OSVERSIONINFOEXA g_VerInfo
#define ok_ntstatus(status, expected)
#define ok_long(expression, result)
#define ok_size_t(expression, result)
#define ok_int(expression, result)
#define ok_ptr(expression, result)
#define UlongToHandle(ul)
#define NT_SUCCESS(StatCode)
#define GetProcAddress(x, y)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
BOOL WINAPI GetVersionExA(IN LPOSVERSIONINFOA lpVersionInformation)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
CRITICAL_SECTION CriticalSection
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSectionAndSpinCount(_In_ PRTL_CRITICAL_SECTION CriticalSection, _In_ ULONG SpinCount)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define STATUS_INVALID_PARAMETER_2
#define STATUS_ACCESS_VIOLATION
#define STATUS_INVALID_PARAMETER_3
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _WIN32_WINNT_WIN7
#define _WIN32_WINNT_VISTA
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
ULONG dwOSVersionInfoSize
LIST_ENTRY ProcessLocksList
struct _RTL_CRITICAL_SECTION * CriticalSection
USHORT CreatorBackTraceIndex
WORD CreatorBackTraceIndexHigh
PRTL_CRITICAL_SECTION_DEBUG DebugInfo
DWORD dwNumberOfProcessors
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetCurrentThreadId(void)
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
_Must_inspect_result_ _In_ ULONG Flags