mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 22:47:28 +00:00
[NTOSKRNL]: RtlGetVersion in the kernel does not fail, does not return a CSD version, and should not be returning negative build numbers. Fix it so that it works as it should (and anyone that relied on correct build numbers will no longer fail).
svn path=/trunk/; revision=59717
This commit is contained in:
parent
f762bc3a74
commit
1f8570be62
|
@ -33,37 +33,21 @@ RtlGetNtGlobalFlags(VOID)
|
|||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
NTSTATUS NTAPI
|
||||
* @implemented
|
||||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
|
||||
{
|
||||
LONG i;
|
||||
ULONG MaxLength;
|
||||
PAGED_CODE();
|
||||
|
||||
if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOW) ||
|
||||
lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
|
||||
{
|
||||
/* Return the basics */
|
||||
lpVersionInformation->dwMajorVersion = NtMajorVersion;
|
||||
lpVersionInformation->dwMinorVersion = NtMinorVersion;
|
||||
lpVersionInformation->dwBuildNumber = NtBuildNumber;
|
||||
lpVersionInformation->dwBuildNumber = NtBuildNumber & 0x3FFF;
|
||||
lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT;
|
||||
RtlZeroMemory(lpVersionInformation->szCSDVersion, sizeof(lpVersionInformation->szCSDVersion));
|
||||
|
||||
if(((CmNtCSDVersion >> 8) & 0xFF) != 0)
|
||||
{
|
||||
MaxLength = (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0])) - 1;
|
||||
i = _snwprintf(lpVersionInformation->szCSDVersion,
|
||||
MaxLength,
|
||||
L"Service Pack %d",
|
||||
((CmNtCSDVersion >> 8) & 0xFF));
|
||||
if (i < 0)
|
||||
{
|
||||
/* Null-terminate if it was overflowed */
|
||||
lpVersionInformation->szCSDVersion[MaxLength] = L'\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if this is the extended version */
|
||||
if (lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW))
|
||||
{
|
||||
PRTL_OSVERSIONINFOEXW InfoEx = (PRTL_OSVERSIONINFOEXW)lpVersionInformation;
|
||||
|
@ -74,10 +58,8 @@ RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
|
|||
InfoEx->wReserved = 0;
|
||||
}
|
||||
|
||||
/* Always succeed */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Reference in a new issue