#if ((_WIN32) && (_WIN32_WINNT < 0x0600))
-typedef BOOL (*PINITIALIZE_CRITICAL_SECTION_EX_FN)(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
+typedef BOOL (WINAPI * PINITIALIZE_CRITICAL_SECTION_EX_FN)(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
static HMODULE g_KERNEL32_Library = NULL;
static BOOL g_InitializeCriticalSectionEx_Detected = FALSE;
if (g_InitializeCriticalSectionEx_Available)
{
/* Vista and later */
- return g_pInitializeCriticalSectionEx(lpCriticalSection, dwSpinCount, Flags);
+ return (*g_pInitializeCriticalSectionEx)(lpCriticalSection, dwSpinCount, Flags);
}
else
{
int TestSynchWaitableTimer(int argc, char* argv[])
{
+ DWORD status;
HANDLE timer;
LONG period;
LARGE_INTEGER due;
- timer = CreateWaitableTimer(NULL, TRUE, NULL);
+ timer = CreateWaitableTimer(NULL, FALSE, NULL);
if (!timer)
{
return -1;
}
- if (WaitForSingleObject(timer, INFINITE) != WAIT_OBJECT_0)
+ status = WaitForSingleObject(timer, INFINITE);
+
+ if (status != WAIT_OBJECT_0)
{
printf("WaitForSingleObject(timer, INFINITE) failure\n");
return -1;
printf("Timer Signaled\n");
- if (WaitForSingleObject(timer, 2000) != WAIT_TIMEOUT)
+ status = WaitForSingleObject(timer, 2000);
+
+ if (status != WAIT_TIMEOUT)
{
- printf("WaitForSingleObject(timer, 2000) failure\n");
+ printf("WaitForSingleObject(timer, 2000) failure: Actual: 0x%04X, Expected: 0x%04X\n", status, WAIT_TIMEOUT);
return -1;
}