Side effect of enabling Vista boot screen

Discuss Windows 11 and newer.
Post Reply
KTRMAmbiance
Posts: 93
Joined: Tue Oct 12, 2021 11:16 am

Side effect of enabling Vista boot screen

Post by KTRMAmbiance »

It's possible to trigger the Vista boot screen on Windows 7 onwards (including 8.x / 10 / 11) with this command:

bcdedit /set graphicsmodedisabled yes

But there're side effects:
BSODs don't show up; the screen freezes instead. (triggered by ending one of the svchost.exe processes)
Post-shutdown power-off screen (non-ACPI) triggered with shutdown -s -t 0 after doing the gpedit/regedit trick also doesn't show up (again it freezes).

Does anybody know why it happens? BSODs and the non-ACPI screen show up only if the modern boot screen is enabled. Resources for the old BSOD and non-ACPI screen (XP ~ 7 style) still exist in the kernel file (ntoskrnl.exe / ntkrnlpa.exe), so it should be possible to trigger them somehow (like the Vista boot screen mentioned above, which is also in the kernel file) (looks like modern BSOD and non-ACPI screen are loaded from a different file, but unsure what file)

AndreMor
User avatar
Posts: 19
Joined: Sun Jul 01, 2018 10:34 pm
Location: Peru
Contact:

Re: Side effect of enabling Vista boot screen

Post by AndreMor »

The mode you disable allows Windows to display/draw on the screen without any particular video driver (usually generic drivers, but can also be VGA BIOS or GOP in the case of UEFI).

This is quite necessary since in a BSOD, the entire system stops, including drivers, because it is an error that paralyzes the system.
Then the system is only left with the basic graphics mode (pure generic drivers) to display that BSOD.
Disabling the mode makes it so that Windows no longer has a place to display the BSOD without using particular drivers.

The same can be said of the post-shutdown mode, that screen also uses that basic graphical mode to display itself.

At this point you wonder, and how X the system can show the Windows Vista bootscreen? Simple, the bootloader includes generic VGA drivers (older than the OS has).
If Windows cannot use their generic drivers, then it will use the bootloader drivers to continue booting the system.
And in case the question arises, that basic graphics mode requires VGA BIOS (or your graphics card to support generic older VGA modes).
So in some UEFI class 3 computers with safe mode, disabling that mode makes the system unbootable.

Another question here, why specifically that boot screen? You caught me, I don't know that. I can only tell you that, that bootscreen, at least after Windows Vista, is only used in certain special cases (although you don't see it in recent versions of Windows; it's stored there, but not used).

Now, a case that happens to me regarding that bootscreen.

I dualboot Windows 10 and Windows 7 on my computer, UEFI system, Windows 7 was installed last.
When I access Windows 7, it always shows Windows Vista bootscreen. There are no disabled modes or anything. So things like the BSOD or the post-shutdown screen work fine.
I have no specific idea why it happens. It also happens if I boot from an official ISO.
I have another computer that also has UEFI with Windows 7, but that one does show the Windows 7 bootscreen correctly.

KTRMAmbiance
Posts: 93
Joined: Tue Oct 12, 2021 11:16 am

Re: Side effect of enabling Vista boot screen

Post by KTRMAmbiance »

Ah so unlike Windows 7 and earlier, Windows 8 onwards don't have VGA drivers after the boot screen, hence why it can't display classic BSOD and power off screens, which requires it

Maybe they can appear if it's possible to enable VGA drivers for after boot screen

AlphaBeta
User avatar
Donator
Posts: 2439
Joined: Sun Aug 12, 2012 4:33 pm
Location: Czechia

Re: Side effect of enabling Vista boot screen

Post by AlphaBeta »

AndreMor wrote:
Wed Feb 01, 2023 9:59 am
The mode you disable allows Windows to display/draw on the screen without any particular video driver (usually generic drivers, but can also be VGA BIOS or GOP in the case of UEFI).

This is quite necessary since in a BSOD, the entire system stops, including drivers, because it is an error that paralyzes the system.
Then the system is only left with the basic graphics mode (pure generic drivers) to display that BSOD.
Disabling the mode makes it so that Windows no longer has a place to display the BSOD without using particular drivers.

The same can be said of the post-shutdown mode, that screen also uses that basic graphical mode to display itself.

At this point you wonder, and how X the system can show the Windows Vista bootscreen? Simple, the bootloader includes generic VGA drivers (older than the OS has).
If Windows cannot use their generic drivers, then it will use the bootloader drivers to continue booting the system.
And in case the question arises, that basic graphics mode requires VGA BIOS (or your graphics card to support generic older VGA modes).
So in some UEFI class 3 computers with safe mode, disabling that mode makes the system unbootable.

Another question here, why specifically that boot screen? You caught me, I don't know that. I can only tell you that, that bootscreen, at least after Windows Vista, is only used in certain special cases (although you don't see it in recent versions of Windows; it's stored there, but not used).
This is not true.

Windows 7 and later have two sets of kernel APIs for displaying boot time graphics (also used for the BSOD):
  • Bootvid.dll (INBV), which only supports the VGA 640x480 at 16 colors mode. This one was already introduced in Windows 2000.
  • BGFX, which uses the VESA BIOS Extensions in order to support higher resolutions with more colors. This one was introduced in Windows 7 in order to overcome the limitations of bootvid.
Said option only disables BGFX, and as a result, the boot screen falls back to using bootvid.dll. For whatever reason, they decided to keep the XP-era animation code as fallback if the newer animation fails to load. However, there likely is no such fallback implemented for the BSOD and "Safe to shutdown" screens, hence the screen simply freezes.

AndreMor wrote:
Wed Feb 01, 2023 9:59 am
Now, a case that happens to me regarding that bootscreen.

I dualboot Windows 10 and Windows 7 on my computer, UEFI system, Windows 7 was installed last.
When I access Windows 7, it always shows Windows Vista bootscreen. There are no disabled modes or anything. So things like the BSOD or the post-shutdown screen work fine.
I have no specific idea why it happens. It also happens if I boot from an official ISO.
I have another computer that also has UEFI with Windows 7, but that one does show the Windows 7 bootscreen correctly.
Windows 7 only uses BGFX for the boot screen but still uses bootvid.dll for the BSOD and "Safe to shutdown" screen. The reason why the BSOD shows up on your system correctly are not any "disabled modes" or whatever, but merely the fact that it is still using the older API.

KTRMAmbiance wrote:
Wed Feb 01, 2023 1:43 pm
Ah so unlike Windows 7 and earlier, Windows 8 onwards don't have VGA drivers after the boot screen, hence why it can't display classic BSOD and power off screens, which requires it

Maybe they can appear if it's possible to enable VGA drivers for after boot screen
No, they are not "drivers" you can enable or disable. They simply reimplemented the BSOD and the "Safe to shutdown" screen using the newer BGFX interface. As I mentioned earlier, there is no fallback for when that's unavailable like there is for the boot screen.
AlphaBeta, stop brainwashing me immediately!

Image

AndreMor
User avatar
Posts: 19
Joined: Sun Jul 01, 2018 10:34 pm
Location: Peru
Contact:

Re: Side effect of enabling Vista boot screen

Post by AndreMor »

AlphaBeta wrote:
Sat Feb 04, 2023 5:52 pm
This is not true.

Windows 7 and later have two sets of kernel APIs for displaying boot time graphics (also used for the BSOD):
  • Bootvid.dll (INBV), which only supports the VGA 640x480 at 16 colors mode. This one was already introduced in Windows 2000.
  • BGFX, which uses the VESA BIOS Extensions in order to support higher resolutions with more colors. This one was introduced in Windows 7 in order to overcome the limitations of bootvid.
Said option only disables BGFX, and as a result, the boot screen falls back to using bootvid.dll. For whatever reason, they decided to keep the XP-era animation code as fallback if the newer animation fails to load. However, there likely is no such fallback implemented for the BSOD and "Safe to shutdown" screens, hence the screen simply freezes.
I think I now have a better understanding of how the boot phase of Windows works, since for everything I've written, there isn't much information on how it all works. It was more deduction than anything else.

AlphaBeta wrote:
Sat Feb 04, 2023 5:52 pm
Windows 7 only uses BGFX for the boot screen but still uses bootvid.dll for the BSOD and "Safe to shutdown" screen. The reason why the BSOD shows up on your system correctly are not any "disabled modes" or whatever, but merely the fact that it is still using the older API.
Makes sense. Although I'll never know why it always uses the old API in Windows 7. Windows 8.1 and above boot (with the new API) works fine.

KTRMAmbiance
Posts: 93
Joined: Tue Oct 12, 2021 11:16 am

Re: Side effect of enabling Vista boot screen

Post by KTRMAmbiance »

Maybe it should be possible to patch bootvid.dll to trigger it on the BSOD and power-off screen when BGFX is disabled, they probably removed the bootvid code for both (and kept it for the boot screen)

Post Reply