[KERNEL32_VISTA] Export InitializeCriticalSectionEx.
authorMark Jansen <mark.jansen@reactos.org>
Sun, 8 Apr 2018 09:09:54 +0000 (11:09 +0200)
committerMark Jansen <mark.jansen@reactos.org>
Sun, 8 Apr 2018 15:30:44 +0000 (17:30 +0200)
dll/apisets/api-ms-win-core-synch-l1-1-0.spec
dll/apisets/api-ms-win-core-synch-l1-2-0.spec
dll/apisets/api-ms-win-core-synch-l1-2-1.spec
dll/win32/kernel32_vista/k32_vista.h
dll/win32/kernel32_vista/kernel32_vista.spec
dll/win32/kernel32_vista/sync.c

index ab22da2..de4c2f4 100644 (file)
@@ -18,7 +18,7 @@
 @ stdcall EnterCriticalSection() kernel32.EnterCriticalSection
 @ stdcall InitializeCriticalSection() kernel32.InitializeCriticalSection
 @ stdcall InitializeCriticalSectionAndSpinCount() kernel32.InitializeCriticalSectionAndSpinCount
-@ stub InitializeCriticalSectionEx
+@ stdcall InitializeCriticalSectionEx() kernel32_vista.InitializeCriticalSectionEx
 @ stdcall InitializeSRWLock() kernel32_vista.InitializeSRWLock
 @ stdcall LeaveCriticalSection() kernel32.LeaveCriticalSection
 @ stdcall OpenEventA() kernel32.OpenEventA
index 78f9a61..778abd9 100644 (file)
@@ -25,7 +25,7 @@
 @ stdcall InitializeConditionVariable() kernel32_vista.InitializeConditionVariable
 @ stdcall InitializeCriticalSection() kernel32.InitializeCriticalSection
 @ stdcall InitializeCriticalSectionAndSpinCount() kernel32.InitializeCriticalSectionAndSpinCount
-@ stub InitializeCriticalSectionEx
+@ stdcall InitializeCriticalSectionEx() kernel32_vista.InitializeCriticalSectionEx
 @ stdcall InitializeSRWLock() kernel32_vista.InitializeSRWLock
 @ stub InitializeSynchronizationBarrier
 @ stdcall LeaveCriticalSection() kernel32.LeaveCriticalSection
index 37270fd..d147b86 100644 (file)
@@ -23,7 +23,7 @@
 @ stdcall InitializeConditionVariable() kernel32_vista.InitializeConditionVariable
 @ stdcall InitializeCriticalSection() kernel32.InitializeCriticalSection
 @ stdcall InitializeCriticalSectionAndSpinCount() kernel32.InitializeCriticalSectionAndSpinCount
-@ stub InitializeCriticalSectionEx
+@ stdcall InitializeCriticalSectionEx() kernel32_vista.InitializeCriticalSectionEx
 @ stdcall InitializeSRWLock() kernel32_vista.InitializeSRWLock
 @ stub InitializeSynchronizationBarrier
 @ stub InitOnceBeginInitialize
index 45c8bfe..fff9ba8 100644 (file)
@@ -8,4 +8,5 @@
 
 #include <ndk/kefuncs.h>
 #include <ndk/psfuncs.h>
+#include <ndk/rtlfuncs.h>
 
index caa7adc..f61e6e6 100644 (file)
@@ -14,3 +14,5 @@
 @ stdcall SleepConditionVariableSRW(ptr ptr long long)
 @ stdcall WakeAllConditionVariable(ptr)
 @ stdcall WakeConditionVariable(ptr)
+
+@ stdcall InitializeCriticalSectionEx(ptr long long)
index a13f984..17d3949 100644 (file)
@@ -148,3 +148,31 @@ WakeConditionVariable(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;
+}
+