From aa39ad97aa1295bd3f9d373f6220da5fe2a2f9d9 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Sat, 6 Apr 2019 13:34:21 +0900 Subject: [PATCH] [KERNEL32_APITEST] Follow up of #1472 --- .../apitests/kernel32/MultiByteToWideChar.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c index 5b59acbe987..0cb6e2215b0 100644 --- a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c +++ b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c @@ -171,9 +171,58 @@ static void TestEntry(const ENTRY *pEntry) } } +typedef NTSTATUS (WINAPI* RTLGETVERSION)(PRTL_OSVERSIONINFOW); + +static OSVERSIONINFOW *GetRealOSVersion() +{ + static OSVERSIONINFOW osvi = { 0 }; + HINSTANCE hNTDLL = LoadLibraryW(L"ntdll.dll"); + if (hNTDLL) + { + RTLGETVERSION fn; + fn = (RTLGETVERSION)GetProcAddress(hNTDLL, "RtlGetVersion"); + if (fn) + { + osvi.dwOSVersionInfoSize = sizeof(osvi); + if (fn(&osvi) == STATUS_SUCCESS) + { + return &osvi; + } + } + } + return NULL; +} + +static BOOL IsWin10Plus(void) +{ + RTL_OSVERSIONINFOW *info = GetRealOSVersion(); + if (!info) + return FALSE; + + return info->dwMajorVersion >= 10; +} + +static BOOL IsReactOS(void) +{ + WCHAR szWinDir[MAX_PATH]; + GetWindowsDirectoryW(szWinDir, _countof(szWinDir)); + return (wcsstr(szWinDir, L"ReactOS") != NULL); +} + START_TEST(MultiByteToWideChar) { size_t i; + + if (!IsWin10Plus() && !IsReactOS()) + { + trace("This test is designed for Windows 10+ and ReactOS.\n" + "It is expected to report some failures on older Windows versions.\n"); +#if 0 + skip(""); + return; +#endif + } + for (i = 0; i < _countof(Entries); ++i) { TestEntry(&Entries[i]); -- 2.17.1