The UEFI boot menu countdown was broken for two reasons:
- StallExecutionProcessor and UefiHwIdle were empty stubs, so the countdown
had no actual delay and no proper idle, it ran instantly without waiting
KbHit used ReadKeyStroke to poll for input, which consumed the keystroke
before GetCh could read it.
This fixes both: StallExecutionProcessor and UefiHwIdle now have real
implementations using BootServices->Stall and a timer event.
KbHit is changed to use CheckEvent(WaitForKey) which polls availability
without consuming the key.
CORE-11954
Supplements commit cac013abef (PR #8104).
CORE-5680
The `EnableHexNumpad` string value is specified in the
`HKEY_CURRENT_USER\Control Panel\Input Method` registry key.
When enabled, the user can enter codepoints in hexadecimal form, using:
- `Alt .xxx` ('dot' prefix), for current ANSI codepage (ACP) codepoints;
- `Alt +xxx` ('plus' prefix), for Unicode codepoints.
These two modes complement the known `Alt xxx` and `Alt 0xxx` decimal forms
for entering codepoints in the current OEM or ACP codepage, respectively.
ROSTESTS-416
More and more winetests we import from Wine hardcode the `C:\Windows`
path and thus, are brittle (read: unreliable) whenever they are run
on any other configuration where Windows (or ReactOS) is **NOT**
installed in this path.
Dedicated to Carl Bialorucki ;)
- Initialize the device extension `IsVgaDriver` field with a single
`IntIsVgaSaveDriver()` call when the video device extension is first
initialized in `IntVideoPortCreateAdapterDeviceObject()`.
- The `IsVgaDriver` field can then be used wherever we previously
invoked `IntIsVgaSaveDriver()` (see e.g. in resource.c)
NOTE: It may be possible to move the `IsVgaDriver` field to the driver
extension structure instead, if it's not possible for miniport drivers
to influence this during calls `VideoPortInitialize()` with a custom-made
registry path (2nd parameter) containing a "\\VgaSave" substring...
(To be investigated.)
Addendum to commits 08a6834075 and 0511e9d869.
- Use the `DPFLTR_VIDEO_ID` debug filter ID, which is the same as what
Windows' videoprt.sys uses, so that tools and people who debug can
easily interoperate between the two.
Addendum to commits 11c95f7b5d (r19801) and 5b799176ba (r31477).
- Use SAL2 annotations.
This problem was noticed by Zombiedeth.
Addendum to commit 89d5a3dbb8 (PR #8451).
There exist buggy 3rd-party miniport drivers, like those for the NVIDIA GeForce
8400 GS card (`nv4_mini.sys` from `181.22_geforce_winxp_32bit_english_whql.exe`)
that invoke the VideoPort Int10 routines (either `VideoPortInt10()`, or the
INT10 interface via `VideoPortQueryServices()`) from their `HwFindAdapter()`
callback (invoked via `VideoPortInitialize()`) or from their `DriverEntry()`.
However, at this point, the VideoPort Int10 services are not fully initialized:
on the x86 port, the VDM memory isn't mapped until later, when the `\Device\VideoX`
is opened by Win32k as part of its initialization in the context of the CSRSS process.
Additionally on the x86 ReactOS port since commit 89d5a3dbb8 (PR #8451), the
X86 emulator is used by default, unless either a registry setting is set to
disable the emulator, or the HAL (e.g. the NT5.x HAL) doesn't export the X86
emulator routines; in these cases the VDM is employed instead.
In the NT5.x builds VideoPort imports the HAL X86 emulator routines at runtime,
since it has to handle their possible absence. However, this importing was
previously delayed up until VideoPort initialized the Int10 services (when
`\Device\VideoX` is opened the first time by Win32k from CSRSS), meaning,
these services and the X86 emulator imports weren't initialized until then.
When booting ReactOS in these conditions with the NVIDIA driver installed,
its too-early `VideoPortInt10()` call was invoking the X86 emulator with no
imports set up, which resulted in the invocation of a NULL function pointer,
leading to a BSOD.
## Proposed changes
- Make the existing `IntInitializeInt10()` function support two invocations:
* When invoked the first time, it initializes the X86 emulator support, by
importing the HAL emulator routines, if applicable.
* When invoked the second+ time, it maps the VDM memory space (done when
`Device\VideoX` is opened by Win32k/CSRSS initialization).
- Actually perform the first `IntInitializeInt10()` invocation in the
`if (!FirstInitialization)` block of `VideoPortInitialize()`.
- Set a `VDMAddressSpaceInitialized` flag to TRUE only when the VDM memory
space is mapped (during the second `IntInitializeInt10()` invocation).
Check this flag in both `IntInt10CallBiosV86()` and `IntInt10CallBiosEmu()`
(x86 build only).
- Adjust two returned status values in `IntInitializeVideoAddressSpace()`.
- [ADVAPI32_WINETEST] Sync to wine-10.0
- [ADVAPI32_WINETEST] Remove obsolete ReactOS hacks
- [ADVAPI32_WINETEST] Add new hacks for Windows Server 2003+ and ReactOS
- [INCLUDE/WINE] Import ntlsa.h, ntsecapi.h, winsvc.h from wine-10.0
- [PSDK] Fix some header definitions to make them more accurate to Microsoft's headers and add some missing definitions
- [XDK] Add a fix for PROCESS_ALL_ACCESS on Vista+ (matches Microsoft's headers)
- [COMDLG32] Remove unneeded _WIN32_WINNT bump after fixing headers
- [SETUPAPI] Remove duplicate definitions that are no longer needed after fixing headers
Add some more Intel AVX-512 extension definitions to the SDK,
as I saw several newer ones were missing. No functionality or purpose yet.
Should be useful for implementing full support in the future.
Reference: Intel Instruction Extensions Set Programming guide,
starting from page 24: https://cdrdv2.intel.com/v1/dl/getContent/671368
Intel Macs released before late 2008/early 2009 are missing the UEFI GOP,
resulting in a frozen/white screen when booting FreeLoader.
These Macs only have the UGA protocol, which does not support direct
framebuffer access, and Apple's proprietary Graphics Info Protocol
(sometimes also called Screen Info Protocol) which can be used
to get all the graphics information we need.
CORE-11954
Follow-up of #8678. Commonize the definition of
LANGID_... values.
JIRA issue: CORE-20243
- Define LANGID_... values for CJK in <cjkcode.h> and
use it.
Fixes assertion failure in ntdll_apitest:NtAllocateVirtualMemory on x64, where the user shared page has a NoChange Vad.
This also prevents freeing the PEB and TEB.
Prepare for Console IME Input for East Asian.
JIRA issue: CORE-20243
- Modify .github/labeler.yml.
- Add base/system/conime/ .
- Modify boot/bootdata/hivesft.inf for Console
settings.
- Add imm32!ImmCallImeConsoleIME prototype
into <imm32_undoc.h>.
- Add IMS_CONSOLEIME_1A and IMS_CONSOLEIME_1B
values into <imm32_undoc.h>, for WM_IME_SYSTEM
message.
Make code faster and improve readability.
JIRA issue: N/A
- Avoid buffer allocation by using
stack variables if possible.
- Add IntGetFontDefaultChar helper
function and use it.
Use hardcoded value '1' instead of predefined 'PCI_BUS_INTERFACE_STANDARD_VERSION', as in the current upstream.
Import upstream commit https://github.com/coolstar/sklhdaudbus/commit/4c92e71ef9e91360cb35be6a09aadb2c3eaaca27.
According to the note from CoolStar, that defined value is different on Windows 11, so it causes some problems and '1' should be used instead.
Missed that during the import before.
Addendum to 7c2d923007.