https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d69a00e0393906320cd57…
commit d69a00e0393906320cd572b642f08e1d8f611e1e
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Sun Sep 16 12:03:08 2018 +0200
Commit: Pierre Schweitzer <pierre(a)reactos.org>
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)
{