Well, I have done some new testing about the issue and this is what i've found so far...
Using VMWare Workstation 12 in a Win10 1803 Host.
Windows XP 64Bit SP2, tuned to boot from all the known working OS Loaders for XP64Bit: PCAT (BIOS) Bootmgr/Winload, UEFI Bootmgr/Winload and the built-in classic NTLoader. Bootmgr/Winload files were taken from the checked version of Windows Vista RTM.
SP1 Vista version of the files and upwards will not work at all, with NTOSKrnl failing its execution very early in its initalization phase (before windows kernel debugger gets enabled), and disabling the VCpu in Vmware case. (
Note: probably Beta12 files, which came from the Longhorn Server Beta, and ofc are newer than my Vista RTM files, are the last ones which are capable to boot successfully NTLoader based windows versions)
The results of the testing:
UEFI BootMgr/Winload: BSOD when NOGUIBOOT parameter directive isn't specified as we already know.
PCAT BootMgr/Winload: BSOD when NOGUIBOOT parameter directive isn't specified too.
What is more, it fails in the same location, in the same way!! O_o (aka, BIOS vs UEFI seem to have nothing to do with the failure as we thought at first). See below for details.
Built-in XP64 NTLoader (Startrom.com + OSLoader.exe): Works fine with BootAnimation and all.
As i said, both UEFI and PCAT versions of Bootmgr/Winload make XP64 fail in the same location, in the same way. Stack text goes as following in both versions:
Code: Select all
fffffadf`e480efd8 fffff800`010d88ae : fffffadf`e480f701 fffff800`010da9bd 00000000`00000000 00000000`00000000 : nt!DbgBreakPointWithStatus
fffffadf`e480efe0 fffff800`010da4e8 : 00000000`00000004 fffffadf`e480f780 fffffadf`e480f701 00000000`00000050 : nt!KiBugCheckDebugBreak+0x1e
fffffadf`e480f040 fffff800`01041794 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KeBugCheck2+0xba1
fffffadf`e480f670 fffff800`010b8904 : 00000000`00000050 fffff800`000c0b16 00000000`00000000 fffffadf`e480f780 : nt!KeBugCheckEx+0x104
fffffadf`e480f6b0 fffff800`01040259 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!MmAccessFault+0x9a0
fffffadf`e480f780 fffff800`0149564d : fffff800`0080e578 00000000`00000000 00000000`00000001 00000000`000000a0 : nt!KiPageFault+0x119
fffffadf`e480f910 fffff800`0148d047 : fffff800`014a7cd0 fffff800`014d85a1 fffff800`0080e578 fffffadf`e480f980 : hal!XmEmulateStream+0xfd
fffffadf`e480f960 fffffadf`e440c5cf : 756e6547`0000000b 00000000`00020000 00000000`00000000 00000000`000a0000 : hal!HalpBiosDisplayReset+0xa7
fffffadf`e480f9b0 fffff800`0141109b : fffffadf`e78fe701 fffff800`0080e578 00000000`00000000 00000000`00000000 : BOOTVID!VidInitialize+0x17f
fffffadf`e480fa10 fffff800`01410f0a : 00000000`00000000 fffffadf`e78fe7d0 fffffadf`e78fe7d0 00000000`00000001 : nt!InbvDriverInitialize+0x6b
fffffadf`e480fa50 fffff800`01246cc9 : 00000000`00000000 fffffadf`e78fe7d0 00000000`00000080 fffffadf`e78fe7d0 : nt!Phase1InitializationDiscard+0x2c7
fffffadf`e480fd40 fffff800`012b4e5e : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!Phase1Initialization+0x9
fffffadf`e480fd70 fffff800`01044196 : fffff800`01177180 fffffadf`e78fe7d0 fffff800`0117b300 fffff800`0080e578 : nt!PspSystemThreadStartup+0x3e
fffffadf`e480fdd0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KxStartSystemThread+0x16
Failure point: hal!XmEmulateStream+0xfd
I want to remark this only happens in xp-64 and win2k3-64. Bootanimation and video drivers which depend in Int10h interface work fine in 32bit versions, booted by NTLdr, or both UEFI and PCAT versions of BootMgr/Winload.
But... 32Bit versions don't use HAL BIOS emulator, but
VDM Ke386CallBios and V86 HalpBiosCall (x86new emulated version of this one is named HalCallBios).