From f42e7525654b47fb6a553ebab4e10686b2d88a10 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Mon, 19 Feb 2007 22:28:50 +0000 Subject: [PATCH] - Create ntverp.h and common.ver files. These are the standard files used by the NT/DDK build systems and we should try to support them as well instead of re-defining everything our own way (especially if we want to build ddk-compatible drivers later on). - Made init.c use version data from ntverp.h instead of hard-coding. - Defined NT 5.2.3790.1830 as the version we report. - Fixed up .rc file to be correct and match DDK-sytnax/style. - For now only the kernel uses this new versionning scheme, but we should change the build system later to use this for every component. svn path=/branches/alex-kd-branch/; revision=25847 --- reactos/include/ddk/ntifs.h | 2 + reactos/include/psdk/common.ver | 207 ++++++++++++++++++++++++++++ reactos/include/psdk/ntverp.h | 151 ++++++++++++++++++++ reactos/ntoskrnl/ex/init.c | 14 +- reactos/ntoskrnl/include/ntoskrnl.h | 11 +- reactos/ntoskrnl/mm/process.c | 8 +- reactos/ntoskrnl/ntoskrnl.rc | 54 +++++--- reactos/ntoskrnl/rtl/misc.c | 11 +- 8 files changed, 417 insertions(+), 41 deletions(-) create mode 100644 reactos/include/psdk/common.ver create mode 100644 reactos/include/psdk/ntverp.h diff --git a/reactos/include/ddk/ntifs.h b/reactos/include/ddk/ntifs.h index 9cc7e7874e2..26677801eda 100644 --- a/reactos/include/ddk/ntifs.h +++ b/reactos/include/ddk/ntifs.h @@ -44,7 +44,9 @@ extern "C" { #pragma pack(push,4) +#ifndef VER_PRODUCTBUILD #define VER_PRODUCTBUILD 10000 +#endif #ifndef NTSYSAPI #define NTSYSAPI diff --git a/reactos/include/psdk/common.ver b/reactos/include/psdk/common.ver new file mode 100644 index 00000000000..3295b44320c --- /dev/null +++ b/reactos/include/psdk/common.ver @@ -0,0 +1,207 @@ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: include/psdk/common.ver + * PURPOSE: Common Version File. + * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) + */ + +// +// Copyright Year +// +#ifndef VER_LEGALCOPYRIGHT_YEARS +#define VER_LEGALCOPYRIGHT_YEARS "2007" +#endif + +// +// Copyright String +// +#ifndef VER_LEGALCOPYRIGHT_STR +#if defined(RC_INVOKED) && !defined(WIN16) +#define VER_LEGALCOPYRIGHT_STR L"\251 ReactOS Foundation. All rights reserved." +#else +#define VER_LEGALCOPYRIGHT_STR "Copyright (c) ReactOS Foundation. All rights reserved." +#endif +#endif + +// +// Product Name String +// +#ifndef VER_PRODUCTNAME_STR +#ifdef RC_INVOKED +#define VER_PRODUCTNAME_STR L"ReactOS\256 Operating System" +#else +#define VER_PRODUCTNAME_STR "ReactOS (R) Operating System" +#endif +#endif + +// +// The File Version is the same as the Product Version +// +#ifndef VER_FILEVERSION +#define VER_FILEVERSION VER_PRODUCTVERSION +#endif +#ifndef VER_FILEVERSION_STR +#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR +#endif + +// +// If no Original Name was given, use the Internal NAme +// +#ifndef VER_ORIGINALFILENAME_STR +#define VER_ORIGINALFILENAME_STR VER_INTERNALNAME_STR +#endif + +// +// Allow tagging a Build by Machine/Date +// +#if defined(__BUILDMACHINE__) +#if defined(__BUILDDATE__) +#define B2(x,y) " (" #x "." #y ")" +#define B1(x,y) B2(x, y) +#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__, __BUILDDATE__) +#else +#define B2(x) " built by: " #x +#define B1(x) B2(x) +#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__) +#endif +#if defined(__BUILDMACHINE_LEN__) +#if __BUILDMACHINE_LEN__ >= 25 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#elif __BUILDMACHINE_LEN__ == 24 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 23 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 22 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 21 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 20 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 19 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 18 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 17 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 16 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 15 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 14 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 13 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 12 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 11 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 10 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 9 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 8 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 7 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 6 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 5 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 4 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 3 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 2 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 1 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#else +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#endif +#else +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#endif +#else +#define BUILD_MACHINE_TAG +#define BUILD_MACHINE_TAG_PADDED +#endif + +// +// Set default neutral Unicode Language ID +// +#ifndef VER_VERSION_UNICODE_LANG +#define VER_VERSION_UNICODE_LANG "000004B0" +#endif + +// +// Set default netural ANSI Language ID +// +#ifndef VER_VERSION_ANSI_LANG +#define VER_VERSION_ANSI_LANG "000004E4" +#endif + +// +// Set default netural translation ID +// +#ifndef VER_VERSION_TRANSLATION +#define VER_VERSION_TRANSLATION 0x0000, 0x04B0 +#endif + +// +// Make sure the Resource Compiler called us. +// If so, then build the actual version resource. +// +#ifdef RC_INVOKED + +VS_VERSION_INFO VERSIONINFO +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION +FILEFLAGSMASK VER_FILEFLAGSMASK +FILEFLAGS VER_FILEFLAGS +FILEOS VER_FILEOS +FILETYPE VER_FILETYPE +FILESUBTYPE VER_FILESUBTYPE +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK VER_VERSION_UNICODE_LANG + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR + VALUE "FileVersion", VER_FILEVERSION_STR BUILD_MACHINE_TAG_PADDED + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR +#ifdef VER_OLESELFREGISTER + VALUE "OleSelfRegister", "\0" +#endif + END + +#ifdef VER_ANSICP + BLOCK VER_VERSION_ANSI_LANG + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR EXPORT_TAG + VALUE "FileVersion", VER_FILEVERSION_STR + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR +#ifdef VER_OLESELFREGISTER + VALUE "OleSelfRegister", "\0" +#endif + END +#endif + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", VER_VERSION_TRANSLATION + END +END + +#endif diff --git a/reactos/include/psdk/ntverp.h b/reactos/include/psdk/ntverp.h new file mode 100644 index 00000000000..bfcc43240da --- /dev/null +++ b/reactos/include/psdk/ntverp.h @@ -0,0 +1,151 @@ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: include/psdk/ntverp.h + * PURPOSE: Master Version File. + * This file should be modified only by the official builder + * to update VERSION, VER_PRODUCTVERSION, VER_PRODUCTVERSION_ + * STR and VER_PRODUCTBETA_STR values. + * The VER_PRODUCTBUILD lines must contain the product + * comments and end with the build#. + * The VER_PRODUCTBETA_STR lines must contain the product + * comments and end with "somestring" //#include #include "ntoskrnl/cm/cm.h" +#include /* DATA **********************************************************************/ -#define BUILD_OSCSDVERSION(major, minor) (((major & 0xFF) << 8) | (minor & 0xFF)) - /* NT Version Info */ -ULONG NtMajorVersion = 5; -ULONG NtMinorVersion = 0; -ULONG NtOSCSDVersion = BUILD_OSCSDVERSION(4, 0); -ULONG NtBuildNumber = KERNEL_VERSION_BUILD; +ULONG NtMajorVersion = VER_PRODUCTMAJORVERSION; +ULONG NtMinorVersion = VER_PRODUCTMINORVERSION; +#if DBG +ULONG NtBuildNumber = VER_PRODUCTBUILD | 0xC0000000; +#else +ULONG NtBuildNumber = VER_PRODUCTBUILD; +#endif /* NT System Info */ ULONG NtGlobalFlag; diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index c60d666dcdb..40fc3b0d7f7 100644 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -8,13 +8,14 @@ /* INCLUDES ******************************************************************/ -/* Always target Windows 2003 Service Pack 1 */ +/* Version Data */ +#include #define _WIN32_WINNT _WIN32_WINNT_WS03 #define NTDDI_VERSION NTDDI_WS03SP1 -#define NTKERNELAPI -#define NOEXTAPI /* DDK/IFS/NDK Headers */ +#define NTKERNELAPI +#define NOEXTAPI #include #undef _KPROCESS #undef _EPROCESS @@ -42,10 +43,8 @@ #include /* ReactOS Headers */ -#include -#include +#include #include -#include #define ExRaiseStatus RtlRaiseStatus #include diff --git a/reactos/ntoskrnl/mm/process.c b/reactos/ntoskrnl/mm/process.c index 9d5d783e307..1346262f5de 100644 --- a/reactos/ntoskrnl/mm/process.c +++ b/reactos/ntoskrnl/mm/process.c @@ -15,8 +15,8 @@ extern ULONG NtMajorVersion; extern ULONG NtMinorVersion; -extern ULONG NtOSCSDVersion; -extern ULONG NtGlobalFlag; +extern ULONG CmNtCSDVersion; +extern ULONG NtBuildNumber; extern MM_SYSTEMSIZE MmSystemSize; #define MM_HIGHEST_VAD_ADDRESS \ @@ -329,9 +329,9 @@ MmCreatePeb(PEPROCESS Process) /* Default Version Data (could get changed below) */ Peb->OSMajorVersion = NtMajorVersion; Peb->OSMinorVersion = NtMinorVersion; - Peb->OSBuildNumber = 2195; + Peb->OSBuildNumber = (USHORT)(NtBuildNumber & 0x3FFF); Peb->OSPlatformId = 2; /* VER_PLATFORM_WIN32_NT */ - Peb->OSCSDVersion = NtOSCSDVersion; + Peb->OSCSDVersion = CmNtCSDVersion; /* Heap and Debug Data */ Peb->NumberOfProcessors = KeNumberProcessors; diff --git a/reactos/ntoskrnl/ntoskrnl.rc b/reactos/ntoskrnl/ntoskrnl.rc index 6d47232fe65..df1a3f2cc71 100644 --- a/reactos/ntoskrnl/ntoskrnl.rc +++ b/reactos/ntoskrnl/ntoskrnl.rc @@ -1,22 +1,38 @@ -/* $Id$ */ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ntoskrnl.rc + * PURPOSE: Kernel Resource File + * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) + */ +#include +#include -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Kernel & System\0" -#define REACTOS_STR_INTERNAL_NAME "ntoskrnl\0" -#define REACTOS_STR_ORIGINAL_FILENAME "ntoskrnl.exe\0" -#include +// +// Version Data +// +#define VER_FILETYPE VFT_DRV +#define VER_FILESUBTYPE VFT2_DRV_SYSTEM +#define VER_FILEDESCRIPTION_STR "NT Kernel & System" +#define VER_INTERNALNAME_STR "ntoskrnl.exe" +#define VER_ORIGINALFILENAME_STR "ntoskrnl.exe" +#define VER_LANGNEUTRAL +#include "common.ver" +// +// Bug Codes and Bitmaps +// #include "bugcodes.rc" - -1 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/1.bmp" -2 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/2.bmp" -3 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/3.bmp" -4 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/4.bmp" -5 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" -6 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/6.bmp" -7 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/7.bmp" -8 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/8.bmp" -13 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/13.bmp" -14 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/14.bmp" -15 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/15.bmp" -16 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/16.bmp" -17 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/17.bmp" +1 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/1.bmp" +2 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/2.bmp" +3 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/3.bmp" +4 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/4.bmp" +5 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" +6 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/6.bmp" +7 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/7.bmp" +8 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/8.bmp" +13 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/13.bmp" +14 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/14.bmp" +15 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/15.bmp" +16 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/16.bmp" +17 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/17.bmp" diff --git a/reactos/ntoskrnl/rtl/misc.c b/reactos/ntoskrnl/rtl/misc.c index 14e5b091fe8..f7ff0aff85c 100644 --- a/reactos/ntoskrnl/rtl/misc.c +++ b/reactos/ntoskrnl/rtl/misc.c @@ -16,10 +16,9 @@ /* GLOBALS *******************************************************************/ -extern ULONG NtGlobalFlag; extern ULONG NtMajorVersion; extern ULONG NtMinorVersion; -extern ULONG NtOSCSDVersion; +extern ULONG CmNtCSDVersion; /* FUNCTIONS *****************************************************************/ @@ -47,12 +46,12 @@ RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation) lpVersionInformation->dwMinorVersion = NtMinorVersion; lpVersionInformation->dwBuildNumber = NtBuildNumber; lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT; - if(((NtOSCSDVersion >> 8) & 0xFF) != 0) + if(((CmNtCSDVersion >> 8) & 0xFF) != 0) { int i = _snwprintf(lpVersionInformation->szCSDVersion, (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0])) - 1, L"Service Pack %d", - ((NtOSCSDVersion >> 8) & 0xFF)); + ((CmNtCSDVersion >> 8) & 0xFF)); lpVersionInformation->szCSDVersion[i] = L'\0'; } else @@ -62,8 +61,8 @@ RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation) if (lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXW)) { RTL_OSVERSIONINFOEXW *InfoEx = (RTL_OSVERSIONINFOEXW *)lpVersionInformation; - InfoEx->wServicePackMajor = (USHORT)(NtOSCSDVersion >> 8) & 0xFF; - InfoEx->wServicePackMinor = (USHORT)(NtOSCSDVersion & 0xFF); + InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF; + InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF); InfoEx->wSuiteMask = (USHORT)SharedUserData->SuiteMask; InfoEx->wProductType = SharedUserData->NtProductType; }