Commit Graph
88397 Commits
Author SHA1 Message Date
Ahmed Arif 057d978fcb [USER32] button.c Fix extra-byte layout on x64 (#8733)
One visible case is the setup LiveCD error dialog, where the message box button can appear with a wrong bold/garbled look instead of the normal default-pushbutton appearance.

## Root cause

`win32ss/user/user32/controls/button.c` stores button state with  `GetWindowLongPtrW` / `SetWindowLongPtrW`, but the control extra-byte layout was still defined as if the first slot were only `sizeof(LONG)` 

On 64-bit builds, that causes the stored state to overlap the cached font, image, and UI-state fields.
2026-03-16 13:01:44 +01:00
Erdem Ersoy 3bbdfb932a [SYSSETUP] Fix DST setting checkbox (#8622)
- [SYSSETUP] Fix DST setting checkbox

Fix DST setting checkbox. The checkbox should be disabled and unchecked on timezones DST not applied, the checkbox should be enabled and checked on timezones DST applied. JIRA issue: CORE-20406
2026-03-15 18:36:47 -05:00
Dmitry BorisovandHermès Bélusca-Maïto aabd163d73 [CPORTLIB:PC98] Refactor serial support code (#8558)
CORE-17977

- Fix a bug when subsequent port detection attempts fail because of
  broken FIFO management. If FIFO logic is enabled the hardware will
  not decode the legacy 0x30 and 0x32 I/O ports.
  Therefore care should be taken when accessing these ports.

- Fix hang on boot when a serial device was not connected to the COM1 port.
  Unlike 16550, a call to `CpDoesPortExist()` for the 8251 will succeed
  even when if the user has not plug the serial port into PC-98 machine.
  (I do not know how to put the 8251 into loopback mode.)
  Fix this by checking for CTS prior to the LSR loop.

- Fix hang on boot when the chosen baud rate becomes too large due to
  `DEFAULT_DEBUG_BAUD_RATE` being set to 115200.

- Some NP21/W workarounds were being incorrectly applied,
  fix them and consolidate them into one check.

- Reuse exsisting code from the NS16550 driver to avoid code duplication.

- Rename HW definitions for better naming.

Co-authored-by: Hermès Bélusca-Maïto <[email protected]>
2026-03-15 22:56:14 +01:00
Hermès Bélusca-Maïto dabc74d468 [CPORTLIB] Split cport.c into the NS16550-specific routines and the rest
Preparing the way for a future library refactoring, along the way of the
one in Windows, which has been updated in Windows 10 and is now documented:
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/uart/
2026-03-15 22:48:25 +01:00
Hermès Bélusca-Maïto a204d174f0 [CPORTLIB] Prepare splitting cport.c into the NS16550-specific routines and the rest 2026-03-15 22:23:28 +01:00
Eric Kohl 07d30c679e [TCPIP] Read the interface metric from the registry or use the automatic metric feature
- Read the interface metric from the registry.
- Assign an automatic metric to an interface if a registry value is not available.
- Determine the automatic metric from the link speed. The metric for the loopback interface is always 1.
2026-03-14 21:10:56 +01:00
Eric Kohl 606d22d6c0 [TCPIP] Map 127.x.x.x addresses to the loopback address
- Identify 127.x.x.x addresses as on-link addresses.
- Modify the neighbor cache to map all 127.x.x.x addresses to the loopback address (127.0.0.1).
- Create a single entry for all 127.x.x.x addresses instead of one entry per address. This entry belongs to the loopback address.

CORE-7484
2026-03-14 16:01:31 +01:00
Václav Zouzalík 616ffdda0f [DESK] Update Czech (cs-CZ) translation (#7472)
Updates Czech translation of Display Control Panel.
2026-03-14 13:28:24 +01:00
Ivan Georgiev a70f59b0dd [DRIVERS] Replace obsolete RtlConvert*ToLargeInteger calls with inline equivalents (#8721)
RtlConvertUlongToLargeInteger and RtlConvertLongToLargeInteger are
obsolete NT routines that assign a 32-bit integer to LARGE_INTEGER.QuadPart.
Replace all driver/DLL usages with inline .QuadPart assignments or
standard C/C++ casts. This removes unnecessary function calls.

CORE-19438
2026-03-14 13:29:02 +03:00
Carl J. Bialorucki f0475a03cb [USER32_WINETEST] Sync user32 winetest to wine-10.0
- [USER32_WINETEST] Sync to wine-10.0.
- [USER32_WINETEST] Define out some function definitions we can't build yet.
- [USER32_WINETEST] Skip parts of test that crash on ReactOS or Windows
- [USER32_WINETEST] Pass behaviors from WS03-Win10 1607
2026-03-13 18:32:47 -05:00
Carl J. Bialorucki 6efe017a3a [INCLUDE/PSDK][INCLUDE/WINE] Header changes needed for user32 winetest sync
- psdk/mmsystem.h: Add a #ifndef guard around SC_SCREENSAVE, MS public headers have the same guard
- psdk/ole2.h: Add guards around CreateDataAdviseHolder that are similar to the guards used in MS public headers
- psdk/winuser.h: Add missing defines, use DWORD and LONG casts to fix test failures on x64. These same casts exist in MS public headers
- wine/test.h: Add defines for winetest_platform_is_wine, flaky, and flaky_wine. The flaky definitions depend on flaky_if, which is a stub that does nothing.
2026-03-13 18:32:47 -05:00
Mikhail Tyukin c47733ab1c [WINTRUST] Sync to wine-10.0 (#8388)
- Sync wintrust and tests to wine-10.0
2026-03-13 18:30:43 -05:00
Mikhail Tyukin 374207770d [FECLIENT] Import from Wine-10.0 (#8301)
* [LIBWINE] add dll_canunload library

* [FECLIENT] Import from Wine-10.0
2026-03-13 16:05:55 -07:00
Katayama Hirofumi MZ e6328fbf1e [NTGDI][FREETYPE][SDK] Rewrite NtGdiGetCharABCWidthsW (#8704)
Refactor and improve readability.
JIRA issue: CORE-20505
- Add GreGetCharABCWidthsW helper function.
- Rewrite NtGdiGetCharABCWidthsW by using
  GreGetCharABCWidthsW.
2026-03-13 18:24:26 +09:00
Eric Kohl 4b75ec5508 [NETCFGX] Fix alternate configuration TCP/IP dialog
Gateway and name server ip address controls must only be enabled and initialized when a non-APIPA configuration has been selected.
2026-03-12 11:27:24 +01:00
Eric Kohl 0df3463af0 [NETCFGX] Fix radio button selection on the basic property page
Use CheckRadioButton instead of CheckDlgButton to set the radio button state.
2026-03-11 16:11:48 +01:00
Nguyen Duc Thinh 35d0dfeef7 [PROCESSR][INF] cpu.inf: Add Hardware IDs for modern Intel CPUs (#8716)
Add Hardware IDs for Intel 8th-14th Gen and Core Ultra.
2026-03-09 14:10:58 +01:00
Dmitry Borisov 1cec553ed1 [FREELDR:PC98] Refactor PC-98 disk access routines (#8546)
- Fix incorrect IDE controller ownership leading to strange and inconsistent behavior during boot.
- Fix a mismatch between the type and flags of the drive.
- Remove obsolete definitions.
- Use SAL2 annotations.

CORE-17977
2026-03-09 14:04:35 +01:00
Eric Kohl 5a147d292d [NETCFGX] Fix: Default gateway data "forgotten" when toggling use of DHCP
CORE-19368
2026-03-09 10:47:16 +01:00
Eric Kohl 16de117a01 [DHCPCSVC] Add required winnls.h 2026-03-09 00:03:04 +01:00
Eric Kohl 1f8f73d3b2 [DHCPCSVC] DhcpHandlePnPEvent: Set the binary class id
Also add a bit of documentation
2026-03-08 23:04:22 +01:00
Hermès Bélusca-Maïto fb22bd74c6 [FREELDR:NTLDR] Pass the LoadOrderListHead list to LoadModule() instead of the full version-specific LoaderBlock 2026-03-08 19:52:04 +01:00
Hermès Bélusca-Maïto 4235244ac9 [FREELDR] Move the NTLDR-specific files from the generic CMakeLists file to rosload/uefi.cmake
The UEFI build doesn't use rosload.exe yet, thus some duplication still
exists. This will be cleaned up in the future.
2026-03-08 19:52:03 +01:00
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