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