kernel32: Move OS version functions to kernelbase.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d38a5ba4e6
commit
471c2f565c
|
@ -875,9 +875,9 @@
|
||||||
@ stdcall GetUserDefaultUILanguage()
|
@ stdcall GetUserDefaultUILanguage()
|
||||||
@ stdcall GetUserGeoID(long)
|
@ stdcall GetUserGeoID(long)
|
||||||
@ stub GetVDMCurrentDirectories
|
@ stub GetVDMCurrentDirectories
|
||||||
@ stdcall GetVersion()
|
@ stdcall -import GetVersion()
|
||||||
@ stdcall GetVersionExA(ptr)
|
@ stdcall -import GetVersionExA(ptr)
|
||||||
@ stdcall GetVersionExW(ptr)
|
@ stdcall -import GetVersionExW(ptr)
|
||||||
@ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long)
|
@ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long)
|
||||||
@ stdcall GetVolumeInformationByHandleW(ptr 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)
|
@ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long)
|
||||||
|
|
|
@ -42,83 +42,6 @@
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(ver);
|
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.@)
|
* VerifyVersionInfoA (KERNEL32.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -750,9 +750,9 @@
|
||||||
# @ stub GetUserOverrideString
|
# @ stub GetUserOverrideString
|
||||||
# @ stub GetUserOverrideWord
|
# @ stub GetUserOverrideWord
|
||||||
@ stdcall GetUserPreferredUILanguages(long ptr ptr ptr) kernel32.GetUserPreferredUILanguages
|
@ stdcall GetUserPreferredUILanguages(long ptr ptr ptr) kernel32.GetUserPreferredUILanguages
|
||||||
@ stdcall GetVersion() kernel32.GetVersion
|
@ stdcall GetVersion()
|
||||||
@ stdcall GetVersionExA(ptr) kernel32.GetVersionExA
|
@ stdcall GetVersionExA(ptr)
|
||||||
@ stdcall GetVersionExW(ptr) kernel32.GetVersionExW
|
@ stdcall GetVersionExW(ptr)
|
||||||
@ stdcall GetVolumeInformationA(str ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationA
|
@ 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 GetVolumeInformationByHandleW(ptr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationByHandleW
|
||||||
@ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationW
|
@ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationW
|
||||||
|
|
|
@ -1337,3 +1337,69 @@ DWORD WINAPI VerFindFileW( DWORD flags, LPCWSTR filename, LPCWSTR win_dir, LPCWS
|
||||||
debugstr_w(cur_dir), debugstr_w(dest));
|
debugstr_w(cur_dir), debugstr_w(dest));
|
||||||
return retval;
|
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 ));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue