Commit Graph
88374 Commits
Author SHA1 Message Date
Ahmed Arif dc9ee34478 [FREELDR:UEFI] Fix broken boot menu countdown (#8714)
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
2026-03-08 21:40:15 +03:00
Adam Słaboń 8a2864dd11 [SDK] Update HAL private dispatch table definitions to Windows 10 November 2015 Update (#8235)
Mostly based on the information on Geoff Chappell's website, Vergilius Project and WDK 10.0.10586.0
2026-03-08 19:04:17 +01:00
Whindmar Saksit f9b3aad55e [RAPPS] Don't display duplicate uninstall entries when WoW64 keys are unsupported (#8253)
This only happens on 64-bit because 32-bit was being conservative.
2026-03-08 19:00:39 +01:00
Ratin Gao 36ffee8ea3 [WIN32SS:NTUSER] Implement SharedUserData->LastSystemRITEventTickCount (#8537)
This field was introduced in NT5.1, records the tick count of the last user input
(system-wide), updated at most once per minute (or once per second since NT6.0).

Unlike `GetLastInputInfo` which is designed for providing session-specific
user input information, `SharedUserData->LastSystemRITEventTickCount` provides
system-wide time, used by:
- [Task Schedule (TASK_EVENT_TRIGGER_ON_IDLE)](https://learn.microsoft.com/en-us/windows/win32/taskschd/i)
- [Inactivity Monitoring](https://learn.microsoft.com/en-us/windows/win32/devnotes/inactivity-monitoring)
- Maybe some places I don't know...

See also:
- [KUSER_SHARED_DATA - Geoff Chappell](https://www.geoffchappell.com/studies/windows/km/ntoskrnl/inc/api/ntexapi_x/kuser_shared_data/index.htm)
- [TASK_TRIGGER_TYPE enumeration - Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/mstask/ne-mstask-task_trigger_type)
- [Task Scheduler: idle conditions](https://learn.microsoft.com/en-us/windows/win32/taskschd/i)
- [GetLastInputInfo function - Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getlastinputinfo)
- [Inactivity Monitoring](https://learn.microsoft.com/en-us/windows/win32/devnotes/inactivity-monitoring)

## Proposed changes

Before this PR, `SharedUserData->LastSystemRITEventTickCount` is never used
and always 0, `gpsi->dwLastSystemRITEventTickCountUpdate` is never used too.
After this PR, `SharedUserData->LastSystemRITEventTickCount` updates correctly
by using `gpsi->dwLastSystemRITEventTickCountUpdate` to record previous update
time, the behavior is the same as on Windows.
2026-03-08 18:58:37 +01:00
Hermès Bélusca-Maïto d61f7e5cd0 [NTOS:PS] Implement Vista+ NtQueryInformationThread(ThreadHideFromDebugger) support (#8486)
https://ntquery.wordpress.com/2014/03/29/anti-debug-ntsetinformationthread/
indicates that starting Vista, `NtQueryInformationThread()` supports
querying the `ThreadHideFromDebugger` information.

This was noticed by contributor Mikhail Tyukin, while testing anti-cheat
protected NT6+ games written with Unity.

See also
https://ntdoc.m417z.com/threadinfoclass#threadhidefromdebugger-17
for the buffers descriptions.
2026-03-08 18:51:42 +01:00
Hermès Bélusca-Maïto 509d8afdf5 [NTDLL_APITEST] Add some tests for NtQueryInformationThread(ThreadHideFromDebugger) (#8486) 2026-03-08 18:51:41 +01:00
Hermès Bélusca-Maïto f4d0d53445 [NTDLL_APITEST] Adjust ThreadHideFromDebugger support for NtQueryInformationThread() probing tests (#8486) 2026-03-08 18:51:40 +01:00
Hermès Bélusca-Maïto 26c126153f [BOOTDATA] Enable Alt Hex-numpad support by default in the LiveCD (#8680) 2026-03-08 18:35:43 +01:00
Hermès Bélusca-Maïto e22f447467 [WIN32SS:NTUSER] Implement EnableHexNumpad support (#8680)
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.
2026-03-08 18:35:37 +01:00
Hermès Bélusca-Maïto 0086992fe7 [NTOS:IO] IoFreeWorkItem(): Check the tag when freeing the previously pool-allocated item (#8651) 2026-03-08 18:30:32 +01:00
Hermès Bélusca-Maïto 9bf854455c [SDK:XDK] extypes.h: Update WORK_QUEUE_TYPE with Win8+ values (#8651) 2026-03-08 18:30:24 +01:00
Hermès Bélusca-Maïto 94a840c9b5 [SDK:NDK] cmtypes.h: Add few missing CM_RESOURCE_* defines, present in the XDK (#8651) 2026-03-08 18:30:14 +01:00
Hermès Bélusca-Maïto ffdae843b4 [BOOTCDREGTEST] Install ReactOS in C:\Windows on the testbots to cope with unreliable Winetests (#8693)
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 ;)
2026-03-08 18:20:11 +01:00
Hermès Bélusca-Maïto 03b1e240bf [VIDEOPRT] Deduplicate the IntIsVgaSaveDriver(Name) functionality (#8718)
- 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.
2026-03-08 17:24:20 +01:00
Hermès Bélusca-Maïto 1de8b4f0ce [DDK][VIDEOPRT] VideoPortDebugPrint(): Fix the debug filter being used; update SAL annotations (#8718)
- 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.
2026-03-08 15:25:09 +01:00
Hermès Bélusca-Maïto e6f7e89ccd [VIDEOPRT] Fix a debug print newline (#8718) 2026-03-08 15:24:55 +01:00
Hermès Bélusca-Maïto f4786c1b91 [VIDEOPRT] Fix INT10h support initialization (#8717)
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()`.
2026-03-08 15:13:54 +01:00
Eric Kohl 3f9f0e2a96 [PSDK][DHCSCSVC][IPCONFIG] Add DhcpHandlePnpEvent stub and use it in ipconfig
Ipconfig uses DhcpHandlePnpEvent to notify the dhcp client of a changed class id.
2026-03-08 12:22:47 +01:00
Justin Miller 4cba65d760 [NTOS:ARM3] Change calculation for more system PTEs (#8613)
* [NTOSKRNL] Increase MI_NUMBER_SYSTEM_PTES for AMD64
* [NTOS:MM] Move the system PTE space on x86 to a different spot
* [KMTESTS] Adjust KmTest
2026-03-05 14:57:09 +00:00
Carl J. Bialorucki c9e73b6a77 [INCLUDE/WINE] Don't use DECLSPEC_IMPORT on ntsecapi.h
- Define WINADVAPI to nothing in Wine ntsecapi.h so MSVCRT can build on GCC.
2026-03-03 22:07:59 -06:00
Carl J. Bialorucki b7e05a7f58 [ADVAPI32_WINETEST] Sync to advapi32 winetest to wine-10.0
- [ADVAPI32_WINETEST] Sync to wine-10.0
- [ADVAPI32_WINETEST] Remove obsolete ReactOS hacks
- [ADVAPI32_WINETEST] Add new hacks for Windows Server 2003+ and ReactOS
2026-03-03 22:07:59 -06:00
Carl J. Bialorucki 391875028d [INCLUDE/WINE][PSDK][XDK] Header changes needed for advapi32 winetest sync to wine-10.0
- [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
2026-03-03 22:07:59 -06:00
Carl J. Bialorucki 9844effa41 [ADVAPI32] Add SEH handling to some crypt functions
This fixes several crashes when running the advapi32 winetest from wine-10.0
2026-03-03 22:07:59 -06:00
Carl J. Bialorucki 4013a064b0 [ADVAPI32] Add NT6+ stubs for RegLoadAppKey and RegRenameKey 2026-03-03 22:07:59 -06:00
Timo Kreuzer 8115b04741 [NTOS:MM] Replace a useless alignment with an ASSERT
All system space mappings are 64k aligned.
2026-03-03 08:16:08 +02:00
Timo Kreuzer 5b4805aee0 [NTOS:MM] Fix section view hash calculation on x64
The "Entry" must always be ULONG_PTR, not ULONG, otherwise we get a different hash index and things go haywire.
2026-03-03 08:16:08 +02:00
Stanislav Motylkov e2cf0bf53a [SDK] Fix build. Addendum to 391f7cae5b (#8565)
../src/sdk/include/reactos/x86x64/Intel/Cpuid.h:1585:15: error: duplicate member 'Reserved'
2026-03-03 00:04:27 +03:00
Peter Eik 391f7cae5b [SDK] Add some more AVX-512 definitions (#8565)
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
2026-03-02 23:52:32 +03:00
Sylas Hollander 1d3f99a87a [FREELDR:UEFI] Add support for Apple Graphics Info Protocol (#8706)
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
2026-03-02 23:22:37 +03:00
Ahmed Arif 08e57f6bc2 [CRT/GCC] Fix infinite recursion in memset/memcpy/memmove at -O2 2026-03-02 20:14:06 +02:00
Sylas Hollander e1853c6621 [FREELDR:UEFI] Correctly pass through ACPI information and map its memory (#8669)
This prevents bugchecks in Windows due to the ACPI table being overwritten
because of the incorrect UEFI to E820 memory mappings.

CORE-11954
2026-03-01 22:26:35 +03:00
Katayama Hirofumi MZ 06ae7ec211 [FREETYPE][NTGDI][GDI32][GDI32_APITEST] Rewrite GetCharWidth etc. (#8690)
Refactoring and improve readability.
JIRA issue: CORE-20505
- Add GreGetCharWidthW helper
  function.
- Rewrite NtGdiGetCharWidthW
  using GreGetCharWidthW.
- Refactor NtGdiGetGlyphIndicesW.
- Improve sanity check of
  GetCharWidthA/W/I,
  GetCharWidth32A/W, and
  GetCharWidthFloatA/W.
- Add GetCharWidth testcase to
  gdi32_apitest.
2026-03-01 20:12:45 +09:00
Mikhail Tyukinandbuddyjojo 3518663767 [COMBASE][COML2] Sync to wine-10.0
Co-Authored-By: buddyjojo <[email protected]>
2026-03-01 10:38:42 +02:00
Mikhail Tyukin 6cf5d73269 [WINESYNC] Update files 2026-03-01 10:38:42 +02:00
Mikhail Tyukin 37ef9507c7 [MSCOREE] Sync to wine-10.0 2026-03-01 10:38:42 +02:00
Timo Kreuzer 1f97ad1f93 [RTL] Sync actctx.c to wine 10.0 2026-03-01 10:38:42 +02:00
Mikhail Tyukin 20312ce0b1 [RPCSS] Sync to wine-10.0 2026-03-01 10:38:42 +02:00
Mikhail Tyukin 5f6b295cb9 [OLE32] Sync to wine-10.0 2026-03-01 10:38:42 +02:00
Mikhail Tyukin c494cc2822 [PSDK] update some headers from wine-10.0 2026-03-01 10:38:42 +02:00
Katayama Hirofumi MZ c33672648f [CONIME] Follow-up of #8678 (#8692)
Follow-up of #8678.
JIRA issue: CORE-20243
- Rename conime_res.rc as conime.rc.
- Rename Icon_2.ico as conime.ico.
2026-03-01 10:21:35 +09:00
Katayama Hirofumi MZ 80bd460836 [SDK][KBSWITCH][CONIME][IMM32][NTUSER][MSCTFIME][MSUTB] Define LANGID_... (#8691)
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.
2026-02-27 10:02:23 +09:00
Timo Kreuzer fca332046e [NTOS:MM] Handle NoChange Vads in NtFreeVirtualMemory
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.
2026-02-27 00:38:58 +02:00
Doug Lyons c83b29caca [COMDLG32] Quiet 2 WINE FIXME's to improve testman reliability (#8689)
ROSTESTS-419

Change two FIXME's below to TRACE's.
fixme:(dll\win32\comdlg32\filedlgbrowser.c:249)
fixme:(dll\win32\comdlg32\filedlgbrowser.c:619)
2026-02-26 13:01:28 -06:00
Katayama Hirofumi MZ 0c4091cd04 [FREETYPE][NTGDI] Update FreeType from 2.10.0 to 2.10.4 (#8671)
Modernize modules.
JIRA issue: CORE-17390
- Update FreeType to 2.10.4.
- Delete ChangeLog.
- Delete sdk/lib/3rdparty/freetype/src/gxvalid
  (useless for us).
- Delete sdk/lib/3rdparty/freetype/src/otvalid
  (useless for us).
- Keep ReactOS hacks on FreeType.
- Adapt ntgdi/freetype.c to new FreeType.
2026-02-26 09:32:57 +09:00
Katayama Hirofumi MZ 423d7031fe [CONIME][BOOTDATA][GITHUB][SDK] Add conime.exe (#8678)
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.
2026-02-26 09:28:22 +09:00
Katayama Hirofumi MZ f7ef944dca [NTGDI][FREETYPE] Refactor NtGdiGetGlyphIndicesW (#8682)
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.
2026-02-26 08:56:02 +09:00
Oleg Dubinskiy 8aed778a96 [HDAUDBUS_NEW] Fix PCI Bus interface version used for WdfFdoQueryForInterface()
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.
2026-02-23 15:17:38 +01:00
Hermès Bélusca-Maïto 08eddb2736 [BOOTDATA] Use HKCU instead of HKU\.DEFAULT to simplify the livecd.inf file
`HKU\.DEFAULT` is equivalent to `HKCU` for the LiveCD hives.
2026-02-21 17:32:33 +01:00
Hermès Bélusca-Maïto 1aab8a87c4 [SHELL32][NTUSER] Fix "accessability" typo 2026-02-21 17:32:32 +01:00
Hermès Bélusca-Maïto 7a505166b9 [WIN32SS:NTUSER] Validate the gpsi pointer when getting/setting the caret blink time 2026-02-21 17:32:32 +01:00