/* * @implemented */ BOOL WINAPI InitializeCriticalSectionAndSpinCount(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount) { NTSTATUS Status; /* Initialize the critical section */ Status = RtlInitializeCriticalSectionAndSpinCount((PVOID)lpCriticalSection, dwSpinCount); if (!NT_SUCCESS(Status)) { /* Set failure code */ BaseSetLastNTError(Status); return FALSE; } /* Success */ return TRUE; }
/* * @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 */ SetLastErrorByStatus(Status); return FALSE; } /* Success */ return TRUE; }
PyHooker::PyHooker() : MemoryAllocator(RtlCreateHeap(HEAP_CREATE_ENABLE_EXECUTE | HEAP_GROWABLE | HEAP_CREATE_ALIGN_16, nullptr, 0, 0, nullptr, nullptr)) { this->VehHandle = nullptr; RtlInitializeCriticalSectionAndSpinCount(&this->Lock, 4000); }
/*********************************************************************** * InitializeCriticalSectionAndSpinCount (KERNEL32.@) */ BOOL WINAPI InitializeCriticalSectionAndSpinCount( CRITICAL_SECTION *crit, DWORD spincount ) { NTSTATUS ret = RtlInitializeCriticalSectionAndSpinCount( crit, spincount ); if (ret) RtlRaiseStatus( ret ); return !ret; }