Alexandre Julliard : kernel32: Move OS version functions to kernelbase.

Alexandre Julliard julliard at winehq.org
Mon Sep 9 16:13:37 CDT 2019


Module: wine
Branch: master
Commit: 471c2f565c1c9dae7c2a9a50ec7edb6267a8c80d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=471c2f565c1c9dae7c2a9a50ec7edb6267a8c80d

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sun Sep  8 21:28:18 2019 +0200

kernel32: Move OS version functions to kernelbase.

Signed-off-by: Alexandre Julliard <julliard at 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 ));
+}




More information about the wine-cvs mailing list