3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/rtl/misc.c
6 * PURPOSE: Various functions
8 * PROGRAMMERS: Hartmut Birr
11 /* INCLUDES *****************************************************************/
15 #include <internal/debug.h>
17 /* GLOBALS *******************************************************************/
19 extern ULONG NtGlobalFlag
;
20 extern ULONG NtMajorVersion
;
21 extern ULONG NtMinorVersion
;
22 extern ULONG NtOSCSDVersion
;
24 /* FUNCTIONS *****************************************************************/
31 RtlGetNtGlobalFlags(VOID
)
41 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation
)
43 if (lpVersionInformation
->dwOSVersionInfoSize
== sizeof(RTL_OSVERSIONINFOW
) ||
44 lpVersionInformation
->dwOSVersionInfoSize
== sizeof(RTL_OSVERSIONINFOEXW
))
46 lpVersionInformation
->dwMajorVersion
= NtMajorVersion
;
47 lpVersionInformation
->dwMinorVersion
= NtMinorVersion
;
48 lpVersionInformation
->dwBuildNumber
= NtBuildNumber
;
49 lpVersionInformation
->dwPlatformId
= VER_PLATFORM_WIN32_NT
;
50 if(((NtOSCSDVersion
>> 8) & 0xFF) != 0)
52 int i
= _snwprintf(lpVersionInformation
->szCSDVersion
,
53 (sizeof(lpVersionInformation
->szCSDVersion
) / sizeof(lpVersionInformation
->szCSDVersion
[0])) - 1,
55 ((NtOSCSDVersion
>> 8) & 0xFF));
56 lpVersionInformation
->szCSDVersion
[i
] = L
'\0';
60 RtlZeroMemory(lpVersionInformation
->szCSDVersion
, sizeof(lpVersionInformation
->szCSDVersion
));
62 if (lpVersionInformation
->dwOSVersionInfoSize
== sizeof(OSVERSIONINFOEXW
))
64 RTL_OSVERSIONINFOEXW
*InfoEx
= (RTL_OSVERSIONINFOEXW
*)lpVersionInformation
;
65 InfoEx
->wServicePackMajor
= (NtOSCSDVersion
>> 8) & 0xFF;
66 InfoEx
->wServicePackMinor
= NtOSCSDVersion
& 0xFF;
67 InfoEx
->wSuiteMask
= SharedUserData
->SuiteMask
;
68 InfoEx
->wProductType
= SharedUserData
->NtProductType
;
71 return STATUS_SUCCESS
;
74 return STATUS_INVALID_PARAMETER
;