Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130#include "k32_vista.h"
#define NDEBUG#include <debug.h>
VOIDWINAPIAcquireSRWLockExclusive(PSRWLOCK Lock){ RtlAcquireSRWLockExclusive((PRTL_SRWLOCK)Lock);}
VOIDWINAPIAcquireSRWLockShared(PSRWLOCK Lock){ RtlAcquireSRWLockShared((PRTL_SRWLOCK)Lock);}
VOIDWINAPIInitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable){ RtlInitializeConditionVariable((PRTL_CONDITION_VARIABLE)ConditionVariable);}
VOIDWINAPIInitializeSRWLock(PSRWLOCK Lock){ RtlInitializeSRWLock((PRTL_SRWLOCK)Lock);}
VOIDWINAPIReleaseSRWLockExclusive(PSRWLOCK Lock){ RtlReleaseSRWLockExclusive((PRTL_SRWLOCK)Lock);}
VOIDWINAPIReleaseSRWLockShared(PSRWLOCK Lock){ RtlReleaseSRWLockShared((PRTL_SRWLOCK)Lock);}
FORCEINLINEPLARGE_INTEGERGetNtTimeout(PLARGE_INTEGER Time, DWORD Timeout){ if (Timeout == INFINITE) return NULL; Time->QuadPart = (ULONGLONG)Timeout * -10000; return Time;}
BOOLWINAPISleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD Timeout){ NTSTATUS Status; LARGE_INTEGER Time;
Status = RtlSleepConditionVariableCS(ConditionVariable, (PRTL_CRITICAL_SECTION)CriticalSection, GetNtTimeout(&Time, Timeout)); if (!NT_SUCCESS(Status) || Status == STATUS_TIMEOUT) { SetLastError(RtlNtStatusToDosError(Status)); return FALSE; } return TRUE;}
BOOLWINAPISleepConditionVariableSRW(PCONDITION_VARIABLE ConditionVariable, PSRWLOCK Lock, DWORD Timeout, ULONG Flags){ NTSTATUS Status; LARGE_INTEGER Time;
Status = RtlSleepConditionVariableSRW(ConditionVariable, Lock, GetNtTimeout(&Time, Timeout), Flags); if (!NT_SUCCESS(Status) || Status == STATUS_TIMEOUT) { SetLastError(RtlNtStatusToDosError(Status)); return FALSE; } return TRUE;}
VOIDWINAPIWakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable){ RtlWakeAllConditionVariable((PRTL_CONDITION_VARIABLE)ConditionVariable);}
VOIDWINAPIWakeConditionVariable(PCONDITION_VARIABLE ConditionVariable){ RtlWakeConditionVariable((PRTL_CONDITION_VARIABLE)ConditionVariable);}
/** @implemented*/BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags){ NTSTATUS Status;
/* FIXME: Flags ignored */
/* Initialize the critical section */ Status = RtlInitializeCriticalSectionAndSpinCount( (PRTL_CRITICAL_SECTION)lpCriticalSection, dwSpinCount); if (!NT_SUCCESS(Status)) { /* Set failure code */ SetLastError(RtlNtStatusToDosError(Status)); return FALSE; }
/* Success */ return TRUE;}