https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a3e22b99a4577c6c2651cd...
commit a3e22b99a4577c6c2651cddf01a96899d519f3a1 Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Sun Jul 7 00:33:06 2019 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sun Jul 14 22:23:48 2019 +0200
[NTOS:INBV] Classify the bitmap resources. (#1649)
See "How to change Windows XP boot logo" at http://www.reversing.be/article.php?story=20061209171938444 as well as the "Boot Editor for WinXP" program for more details. --- ntoskrnl/inbv/inbv.c | 2 +- ntoskrnl/include/resource.h | 38 ++++++++++++++++++++++++++++---------- ntoskrnl/ntoskrnl.rc | 6 ++++-- ntoskrnl/po/poshtdwn.c | 2 +- 4 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/ntoskrnl/inbv/inbv.c b/ntoskrnl/inbv/inbv.c index c1ece52461e..295ffac0142 100644 --- a/ntoskrnl/inbv/inbv.c +++ b/ntoskrnl/inbv/inbv.c @@ -1048,7 +1048,7 @@ DisplayBootBitmap(IN BOOLEAN TextMode)
#ifdef INBV_ROTBAR_IMPLEMENTED /* Server product, use appropriate status bar color */ - Bar = InbvGetResourceAddress(IDB_BAR_SERVER); + Bar = InbvGetResourceAddress(IDB_BAR_DEFAULT); #endif } #else diff --git a/ntoskrnl/include/resource.h b/ntoskrnl/include/resource.h index 2f7c22b1cc4..bb400bb3151 100644 --- a/ntoskrnl/include/resource.h +++ b/ntoskrnl/include/resource.h @@ -1,26 +1,44 @@ #pragma once
+/* + * List of all the bitmap overlay resources present in the NT kernel + * of Windows XP, Windows Server 2003 and their variations. + * See "How to change Windows XP boot logo" at + * http://www.reversing.be/article.php?story=20061209171938444 + * as well as the "Boot Editor for WinXP" program for more details. + */ + #define IDB_BOOT_SCREEN 1 #define IDB_HIBERNATE_BAR 2 #define IDB_SHUTDOWN_MSG 3 -#define IDB_DEFAULT_LOGO 5 +#define IDB_BAR_DEFAULT 4 +#define IDB_LOGO_DEFAULT 5 + #define IDB_WKSTA_HEADER 6 #define IDB_WKSTA_FOOTER 7
-#define IDB_BAR_SERVER 4 #define IDB_BAR_WKSTA 8 #define IDB_BAR_HOME 9 -#define IDB_ROTATING_LINE 19 - -#define IDB_PROF_TEXT 10 -#define IDB_HOME_TEXT 11 -#define IDB_EMBEDDED_TEXT 12 -#define IDB_MCE_TEXT 18
#define IDB_SERVER_LOGO 13 #define IDB_SERVER_HEADER 14 #define IDB_SERVER_FOOTER 15 -#define IDB_STORAGE_SERVER 16 -#define IDB_CLUSTER_SERVER 17 + +/* Workstation editions Overlays */ +#define IDB_TEXT_PROF 10 // Professional +#define IDB_TEXT_HOME 11 // Home Edition +#define IDB_TEXT_EMBEDDED 12 // Embedded +#define IDB_TEXT_SVRFAMILY 13 // Server Family +#define IDB_TEXT_DOTNET 16 // .NET 2003 +#define IDB_TEXT_TABLETPC 17 // Tablet PC Edition +#define IDB_TEXT_MEDIACTR 18 // Media Center Edition + +/* Server editions Overlays */ +#define IDB_STORAGE_SERVER 16 // Storage Server +#define IDB_CLUSTER_SERVER 17 // Compute Cluster Edition +#define IDB_STORAGE_SERVER2 18 + +/* ReactOS additions */ +#define IDB_ROTATING_LINE 19
#define IDB_MAX_RESOURCE IDB_ROTATING_LINE diff --git a/ntoskrnl/ntoskrnl.rc b/ntoskrnl/ntoskrnl.rc index dbe2caccc02..0a01fe32228 100644 --- a/ntoskrnl/ntoskrnl.rc +++ b/ntoskrnl/ntoskrnl.rc @@ -31,12 +31,14 @@ IDB_BOOT_SCREEN BITMAP "inbv/logo/1.bmp" IDB_HIBERNATE_BAR BITMAP "inbv/logo/2.bmp" IDB_SHUTDOWN_MSG BITMAP "inbv/logo/3.bmp" -IDB_BAR_SERVER BITMAP "inbv/logo/4.bmp" -IDB_DEFAULT_LOGO BITMAP "inbv/logo/5.bmp" +IDB_BAR_DEFAULT BITMAP "inbv/logo/4.bmp" +IDB_LOGO_DEFAULT BITMAP "inbv/logo/5.bmp" IDB_WKSTA_HEADER BITMAP "inbv/logo/6.bmp" IDB_WKSTA_FOOTER BITMAP "inbv/logo/7.bmp" IDB_BAR_WKSTA BITMAP "inbv/logo/8.bmp" IDB_SERVER_LOGO BITMAP "inbv/logo/5.bmp" IDB_SERVER_HEADER BITMAP "inbv/logo/14.bmp" IDB_SERVER_FOOTER BITMAP "inbv/logo/15.bmp" + +/* ReactOS additions */ IDB_ROTATING_LINE BITMAP "inbv/logo/line.bmp" diff --git a/ntoskrnl/po/poshtdwn.c b/ntoskrnl/po/poshtdwn.c index dd9bcc2dbb4..17adbc2a415 100644 --- a/ntoskrnl/po/poshtdwn.c +++ b/ntoskrnl/po/poshtdwn.c @@ -165,7 +165,7 @@ PopShutdownHandler(VOID)
/* Display shutdown logo and message */ Logo1 = InbvGetResourceAddress(IDB_SHUTDOWN_MSG); - Logo2 = InbvGetResourceAddress(IDB_DEFAULT_LOGO); + Logo2 = InbvGetResourceAddress(IDB_LOGO_DEFAULT); if ((Logo1) && (Logo2)) { InbvBitBlt(Logo1, 220, 352);