https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d69a00e0393906320cd572b642f08e1d8f611e1e

commit d69a00e0393906320cd572b642f08e1d8f611e1e
Author:     Pierre Schweitzer <[email protected]>
AuthorDate: Sun Sep 16 12:03:08 2018 +0200
Commit:     Pierre Schweitzer <[email protected]>
CommitDate: Sun Sep 16 12:05:42 2018 +0200

    [KERNEL32_WINETEST] Enable ConditionVariable and SRW lock tests
    
    If we cannot find the functions in kernel32, try to get them from
    kernel32_vista. This will allow testing our own implementation, while
    still failing in W2K3 (no implementation available).
---
 modules/rostests/winetests/kernel32/sync.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/modules/rostests/winetests/kernel32/sync.c 
b/modules/rostests/winetests/kernel32/sync.c
index fb368de405..0de706bd26 100644
--- a/modules/rostests/winetests/kernel32/sync.c
+++ b/modules/rostests/winetests/kernel32/sync.c
@@ -2644,6 +2644,9 @@ START_TEST(sync)
     int argc;
     HMODULE hdll = GetModuleHandleA("kernel32.dll");
     HMODULE hntdll = GetModuleHandleA("ntdll.dll");
+#ifdef __REACTOS__
+    HMODULE hdll_vista = GetModuleHandleA("kernel32_vista.dll");
+#endif
 
     pInitOnceInitialize = (void *)GetProcAddress(hdll, "InitOnceInitialize");
     pInitOnceExecuteOnce = (void *)GetProcAddress(hdll, "InitOnceExecuteOnce");
@@ -2668,6 +2671,28 @@ START_TEST(sync)
     pRtlInterlockedPushListSList = (void *)GetProcAddress(hntdll, 
"RtlInterlockedPushListSList");
     pRtlInterlockedPushListSListEx = (void *)GetProcAddress(hntdll, 
"RtlInterlockedPushListSListEx");
 
+#ifdef __REACTOS__
+    if (!pInitializeConditionVariable)
+    {
+        pInitializeConditionVariable = (void *)GetProcAddress(hdll_vista, 
"InitializeConditionVariable");
+        pSleepConditionVariableCS = (void *)GetProcAddress(hdll_vista, 
"SleepConditionVariableCS");
+        pSleepConditionVariableSRW = (void *)GetProcAddress(hdll_vista, 
"SleepConditionVariableSRW");
+        pWakeAllConditionVariable = (void *)GetProcAddress(hdll_vista, 
"WakeAllConditionVariable");
+        pWakeConditionVariable = (void *)GetProcAddress(hdll_vista, 
"WakeConditionVariable");
+    }
+
+    if (!pInitializeSRWLock)
+    {
+        pInitializeSRWLock = (void *)GetProcAddress(hdll_vista, 
"InitializeSRWLock");
+        pAcquireSRWLockExclusive = (void *)GetProcAddress(hdll_vista, 
"AcquireSRWLockExclusive");
+        pAcquireSRWLockShared = (void *)GetProcAddress(hdll_vista, 
"AcquireSRWLockShared");
+        pReleaseSRWLockExclusive = (void *)GetProcAddress(hdll_vista, 
"ReleaseSRWLockExclusive");
+        pReleaseSRWLockShared = (void *)GetProcAddress(hdll_vista, 
"ReleaseSRWLockShared");
+        pTryAcquireSRWLockExclusive = (void *)GetProcAddress(hdll_vista, 
"TryAcquireSRWLockExclusive");
+        pTryAcquireSRWLockShared = (void *)GetProcAddress(hdll_vista, 
"TryAcquireSRWLockShared");
+    }
+#endif
+
     argc = winetest_get_mainargs( &argv );
     if (argc >= 3)
     {

Reply via email to