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