Module: wine Branch: master Commit: 471c2f565c1c9dae7c2a9a50ec7edb6267a8c80d URL: https://source.winehq.org/git/wine.git/?a=commit;h=471c2f565c1c9dae7c2a9a50e...
Author: Alexandre Julliard julliard@winehq.org Date: Sun Sep 8 21:28:18 2019 +0200
kernel32: Move OS version functions to kernelbase.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/kernel32.spec | 6 ++-- dlls/kernel32/version.c | 77 ----------------------------------------- dlls/kernelbase/kernelbase.spec | 6 ++-- dlls/kernelbase/version.c | 66 +++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 83 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index f9d24a7..8bbb08d 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -875,9 +875,9 @@ @ stdcall GetUserDefaultUILanguage() @ stdcall GetUserGeoID(long) @ stub GetVDMCurrentDirectories -@ stdcall GetVersion() -@ stdcall GetVersionExA(ptr) -@ stdcall GetVersionExW(ptr) +@ stdcall -import GetVersion() +@ stdcall -import GetVersionExA(ptr) +@ stdcall -import GetVersionExW(ptr) @ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) @ stdcall GetVolumeInformationByHandleW(ptr ptr long ptr ptr ptr ptr long) @ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) diff --git a/dlls/kernel32/version.c b/dlls/kernel32/version.c index 3cca2ae..e68da5b 100644 --- a/dlls/kernel32/version.c +++ b/dlls/kernel32/version.c @@ -42,83 +42,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(ver);
-/*********************************************************************** - * GetVersion (KERNEL32.@) - * - * Win31 0x80000a03 - * Win95 0xc0000004 - * Win98 0xc0000a04 - * WinME 0xc0005a04 - * NT351 0x04213303 - * NT4 0x05650004 - * Win2000 0x08930005 - * WinXP 0x0a280105 - */ -DWORD WINAPI GetVersion(void) -{ - DWORD result = MAKELONG( MAKEWORD( NtCurrentTeb()->Peb->OSMajorVersion, - NtCurrentTeb()->Peb->OSMinorVersion ), - (NtCurrentTeb()->Peb->OSPlatformId ^ 2) << 14 ); - if (NtCurrentTeb()->Peb->OSPlatformId == VER_PLATFORM_WIN32_NT) - result |= LOWORD(NtCurrentTeb()->Peb->OSBuildNumber) << 16; - return result; -} - - -/*********************************************************************** - * GetVersionExA (KERNEL32.@) - */ -BOOL WINAPI GetVersionExA(OSVERSIONINFOA *v) -{ - RTL_OSVERSIONINFOEXW infoW; - - if (v->dwOSVersionInfoSize != sizeof(OSVERSIONINFOA) && - v->dwOSVersionInfoSize != sizeof(OSVERSIONINFOEXA)) - { - WARN("wrong OSVERSIONINFO size from app (got: %d)\n", - v->dwOSVersionInfoSize ); - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return FALSE; - } - - infoW.dwOSVersionInfoSize = sizeof(infoW); - if (RtlGetVersion( &infoW ) != STATUS_SUCCESS) return FALSE; - - v->dwMajorVersion = infoW.dwMajorVersion; - v->dwMinorVersion = infoW.dwMinorVersion; - v->dwBuildNumber = infoW.dwBuildNumber; - v->dwPlatformId = infoW.dwPlatformId; - WideCharToMultiByte( CP_ACP, 0, infoW.szCSDVersion, -1, - v->szCSDVersion, sizeof(v->szCSDVersion), NULL, NULL ); - - if(v->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXA)) - { - LPOSVERSIONINFOEXA vex = (LPOSVERSIONINFOEXA) v; - vex->wServicePackMajor = infoW.wServicePackMajor; - vex->wServicePackMinor = infoW.wServicePackMinor; - vex->wSuiteMask = infoW.wSuiteMask; - vex->wProductType = infoW.wProductType; - } - return TRUE; -} - - -/*********************************************************************** - * GetVersionExW (KERNEL32.@) - */ -BOOL WINAPI GetVersionExW( OSVERSIONINFOW *info ) -{ - if (info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOW) && - info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOEXW)) - { - WARN("wrong OSVERSIONINFO size from app (got: %d)\n", - info->dwOSVersionInfoSize); - return FALSE; - } - return (RtlGetVersion( (RTL_OSVERSIONINFOEXW *)info ) == STATUS_SUCCESS); -} - - /****************************************************************************** * VerifyVersionInfoA (KERNEL32.@) */ diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index 6a137dc..dc108f1 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -750,9 +750,9 @@ # @ stub GetUserOverrideString # @ stub GetUserOverrideWord @ stdcall GetUserPreferredUILanguages(long ptr ptr ptr) kernel32.GetUserPreferredUILanguages -@ stdcall GetVersion() kernel32.GetVersion -@ stdcall GetVersionExA(ptr) kernel32.GetVersionExA -@ stdcall GetVersionExW(ptr) kernel32.GetVersionExW +@ stdcall GetVersion() +@ stdcall GetVersionExA(ptr) +@ stdcall GetVersionExW(ptr) @ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationA @ stdcall GetVolumeInformationByHandleW(ptr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationByHandleW @ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationW diff --git a/dlls/kernelbase/version.c b/dlls/kernelbase/version.c index 1608bdb..df96dab 100644 --- a/dlls/kernelbase/version.c +++ b/dlls/kernelbase/version.c @@ -1337,3 +1337,69 @@ DWORD WINAPI VerFindFileW( DWORD flags, LPCWSTR filename, LPCWSTR win_dir, LPCWS debugstr_w(cur_dir), debugstr_w(dest)); return retval; } + + +/*********************************************************************** + * GetVersion (kernelbase.@) + */ +DWORD WINAPI GetVersion(void) +{ + DWORD result = MAKELONG( MAKEWORD( NtCurrentTeb()->Peb->OSMajorVersion, + NtCurrentTeb()->Peb->OSMinorVersion ), + (NtCurrentTeb()->Peb->OSPlatformId ^ 2) << 14 ); + if (NtCurrentTeb()->Peb->OSPlatformId == VER_PLATFORM_WIN32_NT) + result |= LOWORD(NtCurrentTeb()->Peb->OSBuildNumber) << 16; + return result; +} + + +/*********************************************************************** + * GetVersionExA (kernelbase.@) + */ +BOOL WINAPI GetVersionExA( OSVERSIONINFOA *info ) +{ + RTL_OSVERSIONINFOEXW infoW; + + if (info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOA) && + info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOEXA)) + { + WARN( "wrong OSVERSIONINFO size from app (got: %d)\n", info->dwOSVersionInfoSize ); + SetLastError( ERROR_INSUFFICIENT_BUFFER ); + return FALSE; + } + + infoW.dwOSVersionInfoSize = sizeof(infoW); + if (!set_ntstatus( RtlGetVersion( &infoW ))) return FALSE; + + info->dwMajorVersion = infoW.dwMajorVersion; + info->dwMinorVersion = infoW.dwMinorVersion; + info->dwBuildNumber = infoW.dwBuildNumber; + info->dwPlatformId = infoW.dwPlatformId; + WideCharToMultiByte( CP_ACP, 0, infoW.szCSDVersion, -1, + info->szCSDVersion, sizeof(info->szCSDVersion), NULL, NULL ); + + if (info->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXA)) + { + OSVERSIONINFOEXA *vex = (OSVERSIONINFOEXA *)info; + vex->wServicePackMajor = infoW.wServicePackMajor; + vex->wServicePackMinor = infoW.wServicePackMinor; + vex->wSuiteMask = infoW.wSuiteMask; + vex->wProductType = infoW.wProductType; + } + return TRUE; +} + + +/*********************************************************************** + * GetVersionExW (kernelbase.@) + */ +BOOL WINAPI GetVersionExW( OSVERSIONINFOW *info ) +{ + if (info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOW) && + info->dwOSVersionInfoSize != sizeof(OSVERSIONINFOEXW)) + { + WARN( "wrong OSVERSIONINFO size from app (got: %d)\n", info->dwOSVersionInfoSize ); + return FALSE; + } + return set_ntstatus( RtlGetVersion( (RTL_OSVERSIONINFOEXW *)info )); +}