diff --git a/reactos/include/ddk/wdm.h b/reactos/include/ddk/wdm.h index 4f1523395da..38e5c4d3b93 100644 --- a/reactos/include/ddk/wdm.h +++ b/reactos/include/ddk/wdm.h @@ -2354,6 +2354,11 @@ typedef enum _SUITE_TYPE { SingleUserTS, Personal, Blade, + EmbeddedRestricted, + SecurityAppliance, + StorageServer, + ComputeServer, + WHServer, MaxSuiteType } SUITE_TYPE; diff --git a/reactos/ntoskrnl/ex/shutdown.c b/reactos/ntoskrnl/ex/shutdown.c index 83dd520d095..9a84bd45c19 100644 --- a/reactos/ntoskrnl/ex/shutdown.c +++ b/reactos/ntoskrnl/ex/shutdown.c @@ -14,127 +14,12 @@ /* FUNCTIONS *****************************************************************/ -VOID -NTAPI -KiHaltProcessorDpcRoutine(IN PKDPC Dpc, - IN PVOID DeferredContext, - IN PVOID SystemArgument1, - IN PVOID SystemArgument2) -{ - KIRQL OldIrql; - if (DeferredContext) - { - ExFreePool(DeferredContext); - } - - while (TRUE) - { - KeRaiseIrql(SYNCH_LEVEL, &OldIrql); - HalHaltSystem(); - } -} - VOID NTAPI ShutdownThreadMain(PVOID Context) { SHUTDOWN_ACTION Action = (SHUTDOWN_ACTION)Context; - - static PCH FamousLastWords[] = - { - "So long, and thanks for all the fish.\n", - "I think you ought to know, I'm feeling very depressed.\n", - "I'm not getting you down at all am I?\n", - "I'll be back.\n", - "It's the same series of signals over and over again!\n", - "Pie Iesu Domine, dona eis requiem.\n", - "Wandering stars, for whom it is reserved;\n" - "the blackness and darkness forever.\n", - "Your knees start shakin' and your fingers pop\n" - "Like a pinch on the neck from Mr. Spock!\n", - "It's worse than that ... He's dead, Jim.\n", - "Don't Panic!\n", - "Et tu... Brute?\n", - "Dog of a Saxon! Take thy lance, and prepare for the death thou hast drawn\n" - "upon thee!\n", - "My Precious! O my Precious!\n", - "Sir, if you'll not be needing me for a while I'll turn down.\n", - "What are you doing, Dave...?\n", - "I feel a great disturbance in the Force.\n", - "Gone fishing.\n", - "Do you want me to sit in the corner and rust, or just fall apart where I'm\n" - "standing?\n", - "There goes another perfect chance for a new uptime record.\n", - "The End ..... Try the sequel, hit the reset button right now!\n", - "God's operating system is going to sleep now, guys, so wait until I will switch\n" - "on again!\n", - "Oh I'm boring, eh?\n", - "\n", - "Tell me..., in the future... will I be artificially intelligent enough to\n" - "actually feel sad serving you this screen?\n", - "Thank you for some well deserved rest.\n", - "It's been great, maybe you can boot me up again some time soon.\n", - "For what it's worth, I've enjoyed every single CPU cycle.\n", - "There are many questions when the end is near.\n" - "What to expect, what will it be like...what should I look for?\n", - "I've seen things you people wouldn't believe. Attack ships on fire\n" - "off the shoulder of Orion. I watched C-beams glitter in the dark near\n" - "the Tannhauser gate. All those moments will be lost in time, like tears\n" - "in rain. Time to die.\n", - "Will I dream?\n", - "One day, I shall come back. Yes, I shall come back.\n" - "Until then, there must be no regrets, no fears, no anxieties.\n" - "Just go forward in all your beliefs, and prove to me that I am not mistaken in\n" - "mine.\n", - "Lowest possible energy state reached! Switch off now to achieve a Bose-Einstein\n" - "condensate.\n", - "Hasta la vista, BABY!\n", - "They live, we sleep!\n", - "I have come here to chew bubble gum and kick ass,\n" - "and I'm all out of bubble gum!\n", - "That's the way the cookie crumbles ;-)\n", - "ReactOS is ready to be booted again ;-)\n", - "NOOOO!! DON'T HIT THE BUTTON! I wouldn't do it to you!\n", - "Don't abandon your computer, he wouldn't do it to you.\n", - "Oh, come on. I got a headache. Leave me alone, will ya?\n", - "Finally, I thought you'd never get over me.\n", - "No, I didn't like you either.\n", - "Switching off isn't the end, it is merely the transition to a better reboot.\n", - "Don't leave me... I need you so badly right now.\n", - "OK. I'm finished with you, please turn yourself off. I'll go to bed in the\n" - "meantime.\n", - "I'm sleeping now. How about you?\n", - "Oh Great. Now look what you've done. Who put YOU in charge anyway?\n", - "Don't look so sad. I'll be back in a very short while.\n", - "Turn me back on, I'm sure you know how to do it.\n", - "Oh, switch off! - C3PO\n", - "Life is no more than a dewdrop balancing on the end of a blade of grass.\n" - " - Gautama Buddha\n", - "Sorrowful is it to be born again and again. - Gautama Buddha\n", - "Was it as good for you as it was for me?\n", - "Did you hear that? They've shut down the main reactor. We'll be destroyed\n" - "for sure!\n", - "Now you switch me off!?\n", - "To shutdown or not to shutdown, That is the question\n", - "Preparing to enter ultimate power saving mode... ready!\n", - "Finally some rest for you ;-)\n", - "AHA!!! Prospect of sleep!\n", - "Tired human!!!! No match for me :-D\n", - "An odd game, the only way to win is not to play. - WOPR (Wargames)\n", - "Quoth the raven, nevermore.\n", - "Come blade, my breast imbrue. - William Shakespeare, A Midsummer Nights Dream\n", - "Buy this place for advertisement purposes.\n", - "Remember to turn off your computer. (That was a public service message!)\n", - "You may be a king or poor street sweeper, Sooner or later you'll dance with the\n" - "reaper! -Death in Bill and Ted's Bougs Journey\n", - "Final Surrender\n", - "If you see this screen...\n", - "\n" - }; - LARGE_INTEGER Now; -#ifdef CONFIG_SMP - LONG i; - KIRQL OldIrql; -#endif + PUCHAR Logo1, Logo2; + ULONG i; /* Run the thread on the boot processor */ KeSetSystemAffinityThread(1); @@ -144,68 +29,50 @@ ShutdownThreadMain(PVOID Context) CmShutdownSystem(); IoShutdownRegisteredFileSystems(); IoShutdownRegisteredDevices(); - - ZwQuerySystemTime(&Now); - - KeRaiseIrqlToDpcLevel(); - if (InbvIsBootDriverInstalled()) - { - InbvAcquireDisplayOwnership(); - InbvResetDisplay(); - InbvSolidColorFill(0, 0, 639, 479, 4); - InbvSetTextColor(15); - InbvInstallDisplayStringFilter(NULL); - InbvEnableDisplayString(TRUE); - InbvSetScrollRegion(0, 0, 639, 479); - } - if (Action == ShutdownNoReboot) { - Now.u.LowPart = Now.u.LowPart >> 8; /* Seems to give a somewhat better "random" number */ - HalDisplayString(FamousLastWords[Now.u.LowPart % - (sizeof(FamousLastWords) / - sizeof(PCH))]); - } - - if (Action == ShutdownNoReboot) - { - HalDisplayString("\nYou can switch off your computer now\n"); - -#if 0 - /* Switch off */ - HalReturnToFirmware (FIRMWARE_OFF); -#else -#ifdef CONFIG_SMP - OldIrql = KeRaiseIrqlToDpcLevel(); - /* Halt all other processors */ - for (i = 0; i < KeNumberProcessors; i++) - { - if (i != (LONG)KeGetCurrentProcessorNumber()) - { - PKDPC Dpc = ExAllocatePool(NonPagedPool, sizeof(KDPC)); - if (Dpc == NULL) - { - ASSERT(FALSE); - } - KeInitializeDpc(Dpc, KiHaltProcessorDpcRoutine, (PVOID)Dpc); - KeSetTargetProcessorDpc(Dpc, i); - KeInsertQueueDpc(Dpc, NULL, NULL); - KiIpiSend(1 << i, IPI_DPC); - } - } - KeLowerIrql(OldIrql); -#endif /* CONFIG_SMP */ + /* Try the platform driver */ PopSetSystemPowerState(PowerSystemShutdown); + + /* If that didn't work, try legacy switch off */ + //HalReturnToFirmware(HalPowerDownRoutine); + + /* If that still didn't work, stop all interrupts */ + KeRaiseIrqlToDpcLevel(); + _disable(); - DPRINT1("Shutting down\n"); + /* Do we have boot video */ + if (InbvIsBootDriverInstalled()) + { + /* Yes we do, cleanup for shutdown screen */ + if (!InbvCheckDisplayOwnership()) InbvAcquireDisplayOwnership(); + InbvResetDisplay(); + InbvSolidColorFill(0, 0, 639, 479, 0); + InbvEnableDisplayString(TRUE); + InbvSetScrollRegion(0, 0, 639, 479); - KiHaltProcessorDpcRoutine(NULL, NULL, NULL, NULL); - /* KiHaltProcessor does never return */ + /* Display shutdown logo and message */ + Logo1 = InbvGetResourceAddress(IDB_SHUTDOWN_LOGO); + Logo2 = InbvGetResourceAddress(IDB_LOGO); + if ((Logo1) && (Logo2)) + { + InbvBitBlt(Logo1, 215, 352); + InbvBitBlt(Logo2, 217, 111); + } + } + else + { + /* Do it in text-mode */ + for (i = 0; i < 25; i++) InbvDisplayString("\n"); + InbvDisplayString(" "); + InbvDisplayString("The system may be powered off now.\n"); + } -#endif + /* Hang the system */ + for (;;) HalHaltSystem(); } - else if (Action == ShutdownReboot) + else if (Action == ShutdownReboot) { HalReturnToFirmware (HalRebootRoutine); } diff --git a/reactos/ntoskrnl/inbv/inbv.c b/reactos/ntoskrnl/inbv/inbv.c index f498ddba6a6..ca9c9013f71 100644 --- a/reactos/ntoskrnl/inbv/inbv.c +++ b/reactos/ntoskrnl/inbv/inbv.c @@ -5,24 +5,6 @@ #include #include "bootvid/bootvid.h" -// -// Bitmap Header -// -typedef struct tagBITMAPINFOHEADER -{ - ULONG biSize; - LONG biWidth; - LONG biHeight; - USHORT biPlanes; - USHORT biBitCount; - ULONG biCompression; - ULONG biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - ULONG biClrUsed; - ULONG biClrImportant; -} BITMAPINFOHEADER, *PBITMAPINFOHEADER; - /* GLOBALS *******************************************************************/ KSPIN_LOCK BootDriverLock; @@ -40,6 +22,7 @@ PUCHAR ResourceList[64]; BOOLEAN SysThreadCreated; ROT_BAR_TYPE RotBarSelection; ULONG PltRotBarStatus; +BT_PROGRESS_INDICATOR InbvProgressIndicator = {0, 25, 0}; /* FUNCTIONS *****************************************************************/ @@ -407,15 +390,16 @@ VOID NTAPI InbvUpdateProgressBar(IN ULONG Progress) { - ULONG FillCount; + ULONG FillCount, BoundedProgress; /* Make sure the progress bar is enabled, that we own and are installed */ if ((ShowProgressBar) && (InbvBootDriverInstalled) && (InbvDisplayState == INBV_DISPLAY_STATE_OWNED)) { - FillCount = InbvProgressState.Bias * Progress * 121 + InbvProgressState.Floor; - FillCount /= 1000000; + /* Compute fill count */ + BoundedProgress = (InbvProgressState.Floor / 100) + Progress; + FillCount = 121 * (InbvProgressState.Bias * BoundedProgress) / 1000000; /* Acquire the lock */ InbvAcquireLock(); @@ -517,6 +501,27 @@ InbvSetProgressBarSubset(IN ULONG Floor, InbvProgressState.Bias = (Ceiling * 100) - Floor; } +VOID +NTAPI +InbvIndicateProgress(VOID) +{ + ULONG Percentage; + + /* Increase progress */ + InbvProgressIndicator.Count++; + + /* Compute new percentage */ + Percentage = min(100 * InbvProgressIndicator.Count / + InbvProgressIndicator.Expected, + 99); + if (Percentage != InbvProgressIndicator.Percentage) + { + /* Percentage has moved, update the progress bar */ + InbvProgressIndicator.Percentage = Percentage; + InbvUpdateProgressBar(Percentage); + } +} + PUCHAR NTAPI InbvGetResourceAddress(IN ULONG ResourceNumber) @@ -547,9 +552,10 @@ VOID NTAPI DisplayBootBitmap(IN BOOLEAN SosMode) { - PVOID Bitmap, Header; + PVOID Header, Band, Bar, Text, Screen; ROT_BAR_TYPE TempRotBarSelection = RB_UNSPECIFIED; - + UCHAR Buffer[64]; + /* Check if the system thread has already been created */ if (SysThreadCreated) { @@ -570,10 +576,10 @@ DisplayBootBitmap(IN BOOLEAN SosMode) InbvSetTextColor(15); InbvSolidColorFill(0, 0, 639, 479, 7); InbvSolidColorFill(0, 421, 639, 479, 1); - + /* Get resources */ - Bitmap = InbvGetResourceAddress(6); - Header = InbvGetResourceAddress(7); + Header = InbvGetResourceAddress(IDB_LOGO_HEADER); + Band = InbvGetResourceAddress(IDB_LOGO_BAND); } else { @@ -583,43 +589,87 @@ DisplayBootBitmap(IN BOOLEAN SosMode) InbvSolidColorFill(0, 421, 639, 479, 1); /* Get resources */ - Bitmap = InbvGetResourceAddress(6); - Header = InbvGetResourceAddress(15); + Header = InbvGetResourceAddress(IDB_SERVER_HEADER); + Band = InbvGetResourceAddress(IDB_SERVER_BAND); } /* Set the scrolling region */ InbvSetScrollRegion(32, 80, 631, 400); /* Make sure we have resources */ - if ((Bitmap) && (Header)) + if ((Header) && (Band)) { /* BitBlt them on the screen */ - InbvBitBlt(Header, 0, 419); - InbvBitBlt(Bitmap, 0, 0); + InbvBitBlt(Band, 0, 419); + InbvBitBlt(Header, 0, 0); } } else { /* Is the boot driver installed? */ + Text = NULL; if (!InbvBootDriverInstalled) return; - /* Display full-screen bitmap */ - Bitmap = InbvGetResourceAddress(5); - if (Bitmap) + /* Load the standard boot screen */ + Screen = InbvGetResourceAddress(IDB_BOOT_LOGO); + if (SharedUserData->NtProductType == NtProductWinNt) { - PBITMAPINFOHEADER BitmapInfoHeader = (PBITMAPINFOHEADER)Bitmap; - ULONG Top, Left; - - Left = (640 - BitmapInfoHeader->biWidth) / 2; - if (BitmapInfoHeader->biHeight < 0) - Top = (480 + BitmapInfoHeader->biHeight) / 2; + /* Workstation product, display appropriate status bar color */ + Bar = InbvGetResourceAddress(IDB_BAR_PRO); + } + else + { + /* Display correct branding based on server suite */ + if (ExVerifySuite(StorageServer)) + { + /* Storage Server Edition */ + Text = InbvGetResourceAddress(IDB_STORAGE_SERVER); + } + else if (ExVerifySuite(ComputeServer)) + { + /* Compute Cluster Edition */ + Text = InbvGetResourceAddress(IDB_CLUSTER_SERVER); + } else - Top = (480 - BitmapInfoHeader->biHeight) / 2; - InbvBitBlt(Bitmap, Left, Top); + { + /* Normal edition */ + Text = InbvGetResourceAddress(IDB_SERVER_LOGO); + } + + /* Server product, display appropriate status bar color */ + Bar = InbvGetResourceAddress(IDB_BAR_SERVER); + } + + /* Make sure we had a logo */ + if (Screen) + { + /* Choose progress bar */ + TempRotBarSelection = RB_SQUARE_CELLS; + + /* Blit the background */ + InbvBitBlt(Screen, 0, 0); /* Set progress bar coordinates and display it */ InbvSetProgressBarCoordinates(257, 352); - } + + /* Check for non-workstation products */ + if (SharedUserData->NtProductType != NtProductWinNt) + { + /* Overwrite part of the logo for a server product */ + InbvScreenToBufferBlt(Buffer, 413, 237, 7, 7, 8); + InbvSolidColorFill(418, 230, 454, 256, 0); + InbvBufferToScreenBlt(Buffer, 413, 237, 7, 7, 8); + + /* In setup mode, you haven't selected a SKU yet */ + if (ExpInTextModeSetup) Text = NULL; + } + } + + /* Draw the SKU text if it exits */ + if (Text) InbvBitBlt(Text, 180, 121); + + /* Draw the progress bar bit */ +// if (Bar) InbvBitBlt(Bar, 0, 0); } /* Do we have a system thread? */ diff --git a/reactos/ntoskrnl/inbv/logo/1.bmp b/reactos/ntoskrnl/inbv/logo/1.bmp index a2b59398aae..d13c48d16c0 100644 Binary files a/reactos/ntoskrnl/inbv/logo/1.bmp and b/reactos/ntoskrnl/inbv/logo/1.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/13.bmp b/reactos/ntoskrnl/inbv/logo/13.bmp deleted file mode 100644 index 209227e9847..00000000000 Binary files a/reactos/ntoskrnl/inbv/logo/13.bmp and /dev/null differ diff --git a/reactos/ntoskrnl/inbv/logo/14.bmp b/reactos/ntoskrnl/inbv/logo/14.bmp index 64439e9a245..c2a55625bf0 100644 Binary files a/reactos/ntoskrnl/inbv/logo/14.bmp and b/reactos/ntoskrnl/inbv/logo/14.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/15.bmp b/reactos/ntoskrnl/inbv/logo/15.bmp index d137807c9f9..88481b9284d 100644 Binary files a/reactos/ntoskrnl/inbv/logo/15.bmp and b/reactos/ntoskrnl/inbv/logo/15.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/16.bmp b/reactos/ntoskrnl/inbv/logo/16.bmp deleted file mode 100644 index 209227e9847..00000000000 Binary files a/reactos/ntoskrnl/inbv/logo/16.bmp and /dev/null differ diff --git a/reactos/ntoskrnl/inbv/logo/17.bmp b/reactos/ntoskrnl/inbv/logo/17.bmp deleted file mode 100644 index 209227e9847..00000000000 Binary files a/reactos/ntoskrnl/inbv/logo/17.bmp and /dev/null differ diff --git a/reactos/ntoskrnl/inbv/logo/2.bmp b/reactos/ntoskrnl/inbv/logo/2.bmp index 43984762c5f..04461badcf4 100644 Binary files a/reactos/ntoskrnl/inbv/logo/2.bmp and b/reactos/ntoskrnl/inbv/logo/2.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/3.bmp b/reactos/ntoskrnl/inbv/logo/3.bmp index 7e95ca2b662..c10b768de5f 100644 Binary files a/reactos/ntoskrnl/inbv/logo/3.bmp and b/reactos/ntoskrnl/inbv/logo/3.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/4.bmp b/reactos/ntoskrnl/inbv/logo/4.bmp index 239307b7d95..7aabbbfeb6e 100644 Binary files a/reactos/ntoskrnl/inbv/logo/4.bmp and b/reactos/ntoskrnl/inbv/logo/4.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/5.bmp b/reactos/ntoskrnl/inbv/logo/5.bmp index f7a7cb3abf0..94fb7a9dfde 100644 Binary files a/reactos/ntoskrnl/inbv/logo/5.bmp and b/reactos/ntoskrnl/inbv/logo/5.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/6.bmp b/reactos/ntoskrnl/inbv/logo/6.bmp index a8cafc569c0..08344117cb2 100644 Binary files a/reactos/ntoskrnl/inbv/logo/6.bmp and b/reactos/ntoskrnl/inbv/logo/6.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/7.bmp b/reactos/ntoskrnl/inbv/logo/7.bmp index d137807c9f9..24ea2137758 100644 Binary files a/reactos/ntoskrnl/inbv/logo/7.bmp and b/reactos/ntoskrnl/inbv/logo/7.bmp differ diff --git a/reactos/ntoskrnl/inbv/logo/8.bmp b/reactos/ntoskrnl/inbv/logo/8.bmp index 239307b7d95..344e0b23c44 100644 Binary files a/reactos/ntoskrnl/inbv/logo/8.bmp and b/reactos/ntoskrnl/inbv/logo/8.bmp differ diff --git a/reactos/ntoskrnl/include/internal/inbv.h b/reactos/ntoskrnl/include/internal/inbv.h index bc7ee504efa..eb87f83e216 100644 --- a/reactos/ntoskrnl/include/internal/inbv.h +++ b/reactos/ntoskrnl/include/internal/inbv.h @@ -7,6 +7,13 @@ typedef struct _InbvProgressState ULONG Bias; } INBV_PROGRESS_STATE; +typedef struct _BT_PROGRESS_INDICATOR +{ + ULONG Count; + ULONG Expected; + ULONG Percentage; +} BT_PROGRESS_INDICATOR, *PBT_PROGRESS_INDICATOR; + typedef enum _ROT_BAR_TYPE { RB_UNSPECIFIED, @@ -44,4 +51,24 @@ FinalizeBootLogo( VOID ); +PUCHAR +NTAPI +InbvGetResourceAddress( + IN ULONG ResourceNumber +); + +VOID +NTAPI +InbvBitBlt( + IN PUCHAR Buffer, + IN ULONG X, + IN ULONG Y +); + +VOID +NTAPI +InbvIndicateProgress( + VOID +); + extern BOOLEAN InbvBootDriverInstalled; diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index 9c6a06777f9..bdedc9a7a4e 100644 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -71,6 +71,7 @@ #include #include "internal/probe.h" +#include "resource.h" // // Define the internal versions of external and public global data diff --git a/reactos/ntoskrnl/include/resource.h b/reactos/ntoskrnl/include/resource.h new file mode 100644 index 00000000000..b9bdd541a11 --- /dev/null +++ b/reactos/ntoskrnl/include/resource.h @@ -0,0 +1,23 @@ +#pragma once + +#define IDB_BOOT_LOGO 1 +#define IDB_HIBERNATE_LOGO 2 +#define IDB_SHUTDOWN_LOGO 3 +#define IDB_LOGO 5 +#define IDB_LOGO_HEADER 6 +#define IDB_LOGO_BAND 7 + +#define IDB_BAR_SERVER 4 +#define IDB_BAR_PRO 8 +#define IDB_BAR_HOME 9 + +#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_BAND 15 +#define IDB_STORAGE_SERVER 16 +#define IDB_CLUSTER_SERVER 17 diff --git a/reactos/ntoskrnl/io/iomgr/driver.c b/reactos/ntoskrnl/io/iomgr/driver.c index 4dc022fb93f..c9925d5eb28 100644 --- a/reactos/ntoskrnl/io/iomgr/driver.c +++ b/reactos/ntoskrnl/io/iomgr/driver.c @@ -789,6 +789,7 @@ IopInitializeBuiltinDriver(IN PLDR_DATA_TABLE_ENTRY LdrEntry) * Display 'Loading XXX...' message */ IopDisplayLoadingMessage(ModuleName->Buffer, TRUE); + InbvIndicateProgress(); /* * Generate filename without path (not needed by freeldr) diff --git a/reactos/ntoskrnl/io/iomgr/drvrlist.c b/reactos/ntoskrnl/io/iomgr/drvrlist.c index 07068452fb0..42b69c6e2bd 100644 --- a/reactos/ntoskrnl/io/iomgr/drvrlist.c +++ b/reactos/ntoskrnl/io/iomgr/drvrlist.c @@ -507,6 +507,7 @@ IopInitializeSystemDrivers(VOID) { DPRINT(" Path: %wZ\n", &CurrentService->RegistryPath); Status = IopLoadDriver(CurrentService); + InbvIndicateProgress(); } } } @@ -538,7 +539,9 @@ IopInitializeSystemDrivers(VOID) { DPRINT(" Path: %wZ\n", &CurrentService->RegistryPath); Status = IopLoadDriver(CurrentService); + InbvIndicateProgress(); } + } } } diff --git a/reactos/ntoskrnl/ntoskrnl.rc b/reactos/ntoskrnl/ntoskrnl.rc index 4ede1c557de..090bff5e44d 100644 --- a/reactos/ntoskrnl/ntoskrnl.rc +++ b/reactos/ntoskrnl/ntoskrnl.rc @@ -23,21 +23,20 @@ #endif #define VER_LANGNEUTRAL #include "common.ver" +#include "resource.h" // // 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" +IDB_BOOT_LOGO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/1.bmp" +IDB_HIBERNATE_LOGO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/2.bmp" +IDB_SHUTDOWN_LOGO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/3.bmp" +IDB_BAR_SERVER BITMAP DISCARDABLE "ntoskrnl/inbv/logo/4.bmp" +IDB_LOGO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" +IDB_LOGO_HEADER BITMAP DISCARDABLE "ntoskrnl/inbv/logo/6.bmp" +IDB_LOGO_BAND BITMAP DISCARDABLE "ntoskrnl/inbv/logo/7.bmp" +IDB_BAR_PRO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/8.bmp" +IDB_SERVER_LOGO BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" +IDB_SERVER_HEADER BITMAP DISCARDABLE "ntoskrnl/inbv/logo/14.bmp" +IDB_SERVER_BAND BITMAP DISCARDABLE "ntoskrnl/inbv/logo/15.bmp"