89267 Commits
Author SHA1 Message Date
Amine Khaldi 4152023f56 [URLMON] Sync with Wine 10.0. CORE-20596 2026-07-25 17:41:41 +01:00
Amine Khaldi b6cb53569d [MSVCRTEX] Add recalloc. CORE-20596 2026-07-25 17:41:41 +01:00
Timo Kreuzer 360b579a5d [NTDLL_APITEST] Add more tests for NtCreateThread 2026-07-25 16:15:37 +00:00
Timo Kreuzer 263427823c [NTDLL_APITEST] Implement test for RtlInitializeContext 2026-07-25 16:15:37 +00:00
Timo Kreuzer 91b613f158 [NDK][RTL] Fix signature of RtlInitializeContext 2026-07-25 16:15:37 +00:00
Timo Kreuzer 3a0311753f [NTDLL_APITEST] Improve NtQueryInformationThread test
- Skip ThreadNameInformation test on Windows versions < NTDDI_WIN10_RS1
- Disable Test_ThreadQueryAlignmentProbe as it is too broken
2026-07-25 16:15:37 +00:00
Timo Kreuzer 83216fe2ed Revert "[SETUP:LIB] Prepare setup for GPT support"
This reverts commit 8d238c1d00.
2026-07-25 11:29:13 +00:00
Mohammad Amin Mollazadeh e3c4b21737 [RAPPS] Force download online apps catalog in ID_RESETDB (#9242)
Since the database is downloaded lazily, clicking on "Update Database"
button won't re-download the online catalog if "Available apps" view is
not active. This patch forces the download even when the "Installed apps"
is active.

CORE-20205
2026-07-25 08:15:19 +02:00
Hermès Bélusca-Maïto f6fcb596bc [SETUPLIB] There is no need to update the keyboard settings only for non-unattended setup
Updating keyboard layout settings with user-overridden values, was
restricted to non-unattended setups, in an apparent attempt to fix
in commit 829b0c63d9 (r38146) the problem reported at CORE-3634.
This special-casing is now unnecessary.
2026-07-24 23:10:48 +02:00
Hermès Bélusca-Maïto 5302d4dca6 [SETUP:REACTOS] Select a better default keyboard layout, depending on the selected language
For example, when installing ReactOS in French, this selects the French
keyboard layout as default, while keeping English installed but not
activated.

This is partly a "hack", and adapts the existing solution chosen in USETUP.
A better fix will be done in the future.
2026-07-24 23:10:32 +02:00
Hermès Bélusca-Maïto 5da41b3448 [SETUP:REACTOS] Improve Installation thread initialization and termination
- Improve install abort on errors;
- Wait for the install thread to finish within the page that created it;
- Display the hourglass cursor while waiting for the thread.
2026-07-24 23:10:19 +02:00
Hermès Bélusca-Maïto 1648ea7555 [SETUP:REACTOS] Fix initialization of the Finish page
- Ensure the wizard gets shown, centered on the screen, and focused,
  when the Finish page is reached.

- Trigger the change of the "Cancel" wizard dialog button text, not
  from the `WM_INITDIALOG` page handler, but from `PSN_SETACTIVE`.

- Add a `PSN_KILLACTIVE` handler to kill the timer initialized in
  the `PSN_SETACTIVE` handler.

- Add a `PSN_WIZBACK` handler to disable going back in the wizard.
2026-07-24 23:10:04 +02:00
Hermès Bélusca-Maïto da6e675c1b [SETUP:REACTOS] Set a common install wizard title; remove the per-page titles
This requires a workaround for the existing Wine propsheet/wizard
title-setting bugs, see CORE-20687.
2026-07-24 23:09:49 +02:00
Hermès Bélusca-Maïto 8eeff75e15 [SETUP:REACTOS] Improve wizard dialog initialization
- Store the wizard page descriptors in a separate static array.
  Then loop over these descriptors to create each page.

- Set the window small icon.

- Add a property sheet callback to set the window large icon (and not
  a rescaled small icon!) from the `PSCB_INITIALIZED` notification.
  Also, handle the `PSCB_PRECREATE` notification, and subclass the
  property sheet window procedure, so as to be able to initially center
  the wizard window while keeping it hidden before showing it,
  independently of which wizard page is going to be initially shown.

  A small hack for handling the `DM_REPOSITION` message is added,
  because Wine's comctl32 propsheet.c doesn't send the message after
  creating, initializing and resizing the property sheet dialog...
2026-07-24 23:09:28 +02:00
Hermès Bélusca-Maïto 4777621490 [SETUP:REACTOS] Minor code cleanup
- drivepage.c:
  * Move some local loop variables inside their loop block.
  * Move the core of the Drives/Partitions dialog `PSN_WIZNEXT` handler
    into a separate function.

- reactos.c:
  * Move some `break;` into their corresponding `case` blocks.
  * Replace remaining `EnableWindow(GetDlgItem(...), ...)` instances
    with `EnableDlgItem(...)`.
  * Introduce `hWndParent` variables in some routines, so as not to
    invoke `GetParent(hwndDlg)` repeatedly.
  * Use NULL for default "Error" message-box title.
  * Remove an empty `case WM_DESTROY` in `FinishDlgProc()`.

- Use explicit Unicode property-sheet structures.

- Update the copyright notice dates. Fix the file header in drivepage.c.
  Add the missing file header into reactos.rc.
2026-07-24 23:09:00 +02:00
Hermès Bélusca-Maïto b6f3d519b4 [SETUP:REACTOS] Fix navigation in the setup wizard pages and dialogs
- Fix TAB order in the Installation type page.

- Don't systematically set focus to the "Install ReactOS" radio-button.

  Always resetting the focus to the "Install" choice is unwanted,
  because, if the user instead selects "Upgrade", goes to the next
  "Upgrade/Repair" page, then goes back to the installation type page,
  the selection focus wouldn't be on what the user previously chose,
  but would instead be on the "Install" choice, while the "Upgrade"
  choice would stay checked, thus leading to an inconsistency.

  We want instead the selection to stay as the user previously chose,
  without changing it.

- Correctly handle item selection change in the Installations list,
  so that only the "selected" state change is detected and UI buttons
  are updated accordingly.
  When the `PSN_QUERYINITIALFOCUS` notification is received (whenever
  the page is made active), reselect the currently-selected item so as
  to properly update the UI buttons.

- Add missing keyboard accelerators in the Devices selection page.

- Group all the push-buttons together in the Drives/Partitions page,
  so that when the focus is on the first one and the user presses the
  Left-arrow key, the focus stays on the buttons and doesn't go to the
  partitions list.

- Remove the `PSN_QUERYINITIALFOCUS` hack in the Drives/Partition page
  dialog procedure (see commit 6cb1394bb1, PR #9272).

- Correctly handle item selection change in the Drives/Partition list,
  so that only the "selected" state change is detected and UI buttons
  are updated accordingly.
  When the `PSN_QUERYINITIALFOCUS` notification is received (whenever
  the page is made active), reselect the currently-selected item so as
  to properly update the UI buttons.

- Remove redundant `WS_VISIBLE` style for all the Edit-text fields of
  the Summary page.

- In the Start/Welcome and the Finish/Abort pages: when disabling the
  wizard "Back"/"Next" navigation buttons with `PropSheet_SetWizButtons()`,
  for the purpose of hiding them next, do *NOT* use that macro, because
  it posts the `PSM_SETWIZBUTTONS` message instead of sending it, and so,
  it would be handled after hiding the buttons. The message would then
  interfere with the hidden buttons (when both "Back" and "Next" are
  hidden, "Next" gets forcefully shown).

- Set the default button to "No" for some confirmation dialogs
  (setup abort; partition deletion; ...).
2026-07-24 23:07:40 +02:00
Hermès Bélusca-Maïto 6cb1394bb1 [COMCTL32][COMCTL32_WINETEST] Import wine implementation for PSN_QUERYINITIALFOCUS (#9272)
Import patch from wine-9.15: wine-mirror/wine@786bb3b
```
comctl32: Add handling for PSN_QUERYINITIALFOCUS in prop.c.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54862

wine commit id 786bb3b993f7fe195adb732271df912286c5bfe7 by Jacob Czekalla <[email protected]>
```
2026-07-24 23:04:41 +02:00
Hermès Bélusca-Maïto 620b273823 [COMCTL32_WINETEST] Import wine test for PSN_QUERYINITIALFOCUS (#9272)
Import patch from wine-9.15: wine-mirror/wine@320547b
```
comctl32/tests: Add test for PSN_QUERYINITIALFOCUS for the propsheet.

wine commit id 320547b6757a7236929a0d47847cab0802607cde by Jacob Czekalla <[email protected]>
```
2026-07-24 23:04:40 +02:00
Hermès Bélusca-Maïto e9990e7b3d [SETUP:REACTOS] Improve the Installation Progress page layout
- Move around the status items static controls.

- Bolden the main status label.

- Whereas the repair/upgrade procedure may move, rename, or delete files,
  the regular installation only copies files. Therefore, display only the
  file name instead of the full "Copying..." message in this case.
  (Based upon a suggestion by Carl Bialorucki.)
2026-07-24 23:01:10 +02:00
Hermès Bélusca-Maïto 44e4f66ffb [SETUP:REACTOS] treelist.c/.h: Convert the files to UTF-8 without BOM 2026-07-24 23:00:58 +02:00
Ahmed ARIF 174b9d64fe [NTOS] Export the UTF-8 conversion routines
RtlUTF8ToUnicodeN and RtlUnicodeToUTF8N are documented kernel APIs since Windows 7, but they are missing from the ntoskrnl export table.
2026-07-24 14:49:13 +02:00
Whindmar Saksit 68a03b2e1a [BROWSEUI][SHELL32] Prevent crash by unsubclassing DefView during teardown (#9305)
CORE-20504
2026-07-24 11:38:06 +02:00
Deep Varkute 90c6642673 [IPCONFIG] Fix memory leak for disconnected adapters in ShowInfo (#9324)
Signed-off-by: Deep Varkute <[email protected]>
2026-07-24 12:10:37 +03:00
Carl J. Bialorucki c3d141b675 [NTOS][NTOS:FSRTL] Use RtlIsNameInExpression for FsRtlIsNameInExpression
Also link rtl_vista to ntoskrnl
2026-07-22 19:53:20 -05:00
Carl J. Bialorucki 96005fb298 [NTDLL_APITEST] Add test for RtlIsNameInExpression 2026-07-22 19:53:20 -05:00
Carl J. Bialorucki 6ccb3488e4 [NTDLL] Export RtlIsNameInExpression from ntdll, ntdll_vista 2026-07-22 19:53:20 -05:00
Carl J. Bialorucki d2b688a5ca [RTL] Add RtlIsNameInExpression to RTL 2026-07-22 19:53:20 -05:00
Eric Kohl 8d238c1d00 [SETUP:LIB] Prepare setup for GPT support
Replace IOCTL_DISK_GET_DRIVE_LAYOUT by IOCTL_DISK_GET_DRIVE_LAYOUT_EX and make the necessary adjustments.
2026-07-22 23:20:17 +02:00
Thiago Mucci 19f3949290 [MSCONFIG] Disable tree view label editing (#9302)
CORE-20447

Remove the `TVS_EDITLABELS` window style from the tree view control of the `SYSTEM.INI`/`WIN.INI` tabs, making the labels read-only as intended.

This prevents the UI from opening an editable text box when users click or pause on tree view items, which was misleading since editing/saving here is not implemented.
Users are still able to edit configurations using the dedicated "Edit" button on the UI.
2026-07-22 00:12:40 +02:00
Eric Kohl 7090cf7ebc [USETUP] Enable users to cancel the decision to format a partition 2026-07-22 00:07:03 +02:00
copilot-swe-agent[bot] 7877f5bc0b [NTOS:CC] Fix CcRosDeleteFileCache race with concurrent CcFlushCache causing ASSERT(Refs > 0)
Root cause: CcRosDeleteFileCache's first loop ran under the spinlock and removed VACBs from the LRU and dirty lists, but left them in CacheMapVacbListHead. It also set Vacb->Dirty = TRUE as a flush hint (after CcRosUnmarkDirtyVacb cleared it), creating an inconsistent VACB state: Dirty=TRUE but not in the dirty list, with only the cache-map-list refcount (1). After releasing the lock, the second loop removed VACBs from CacheMapVacbListHead without holding any lock.

This created a race with CcFlushCache: a caller that already held a SharedCacheMap pointer could call CcRosLookupVacb between the two loops, find the VACB (refcount → 2), see Dirty=TRUE (the hack), and call CcRosFlushVacb. Meanwhile the second loop could set Dirty=FALSE, drop the cmap ref (→1, print "Leaking VACB"), and then the early-return in CcRosUnmarkDirtyVacb would skip the decrement. CcRosReleaseVacb then drops 1→0 → ASSERT(Refs > 0) fires.

Before the previous fix, the same race caused ASSERT(Vacb->Dirty) in the old CcRosUnmarkDirtyVacb — the previous fix just changed which assert fired.

The fix:
- CcRosDeleteFileCache: VACBs are now removed from CacheMapVacbListHead in the first loop, under the spinlock, and moved to a private LocalVacbList. After the lock is released, CcRosLookupVacb can no longer find these VACBs, preventing new lookup references from being created.
- CcRosReleaseVacb: Removed the overly strict ASSERT(Refs > 0). When CcRosDeleteFileCache drops the cmap ref while a lookup is outstanding, CcRosReleaseVacb legitimately releases the last reference and CcRosVacbDecRefCount correctly frees the VACB. Callers (e.g., CcFlushCache) don't access the VACB pointer afterward.

Signed-off-by: Timo Kreuzer <[email protected]>
2026-07-21 21:59:09 +00:00
copilot-swe-agent[bot] 55c4c525b4 [NTOS:CC] Fix a race condition for dirty VACBs
- CcRosUnmarkDirtyVacb: return BOOLEAN, guard against double-unmark
- CcRosMarkDirtyVacb: guard against double-insertion
- CcRosFlushVacb: only re-mark dirty on failure if we were the one who unmarked
- Add comments to lockless Dirty reads in CcFlushCache and CcRosReleaseVacb

Signed-off-by: Timo Kreuzer <[email protected]>
2026-07-21 21:59:09 +00:00
095860df57 [SDK][SHELL32] A big bundle of NT6+ shell32 implementations and stubs (#8834)
Split off CShellitemArray
stub out CShellLibrary
stub out CUserEventTimer
rewrite some vista shellitem APIs
Misc stubs for vista
AddITaskbarList3/ITaskbarList4

---------

Co-authored-by: Oleb Dubinskiy <[email protected]>
Co-authored-by: Mikhail Tyukin <[email protected]>
2026-07-21 12:11:29 -07:00
Timo Kreuzer ccc242ed6f [ARBITERS][NDIS] Try to fix the repository 2026-07-21 08:52:34 +00:00
Timo Kreuzer 795f69c63f [APPHELP] SdbGetFileAttributes: skip NT prefix for GetFileVersionInfoSizeW
SdbGetFileAttributes supports NT paths (at least on Windows 10), but GetFileVersionInfoSizeW does not.
2026-07-20 19:27:31 +00:00
Timo Kreuzer 5437e77c62 [APPHELP_APITEST] Add test for NT path prefix used in pSdbGetFileAttributes 2026-07-20 19:27:31 +00:00
Timo Kreuzer a9d5a666dc [VERSION_APITEST] Implement tests for GetFileVersionInfoSizeA/W 2026-07-20 19:27:31 +00:00
Eric Kohl 8d70dca549 [FMIFS] Do not keep all file system providers loaded
- Load the required provider only!
- Unload providers on last process detach
2026-07-19 22:42:15 +02:00
708d289dbf [NDIS] Use the PCI standard bus interface for config access (#8452)
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
Co-authored-by: Dmitry Borisov <[email protected]>
2026-07-19 10:33:34 -07:00
Justin Miller 9ffc373bf6 [NTOS:IO][SDK:DRIVERS][FORMATTING] Start SDK:Arbiter from scratch (#9270)
Same idea as
094b7d9
and
Final step that doesn't require rtlrange improvements
2026-07-19 10:29:04 -07:00
Mikhail Tyukin 248aa75023 [WSHTCPIP][TCPIP] Implement SO_KEEPALIVE, SIO_KEEPALIVE_VALS 2026-07-19 15:33:29 +02:00
Timo Kreuzer 379e6bb05f [RTL][NTDLL_VISTA] Implement RtlWow64GetProcessMachines 2026-07-19 10:33:38 +00:00
Whindmar Saksit 0298e10d5d [CMD] Validate and uppercase CHOICE selection characters
- Ensures the choice selection characters are not duplicated, this passes one extra Wine test.
- Make the choice selection characters display as uppercase when appropriate.
- Return the errorlevel.
2026-07-18 18:42:11 +02:00
Whindmar Saksit e7eb740583 [CMD] CHOICE command needs to handle pipe input without getting stuck in timeout
This fixes cmd_winetest hanging on the echo Y | choice /C ABCXYZ /D A /T 2 test.

- Reads the first character from stdin if stdin is not connected to a real console.
- Ensures the timeout never goes negative if there is a problem reading stdin.
2026-07-18 18:42:11 +02:00
Eric Kohl 0943343296 [NETSH] Support the flags CMD_FLAG_ONLINE, CMD_FLAG_LOCAL and CMD_FLAG_HIDDEN 2026-07-18 16:57:00 +02:00
Alex Mendoza ae50d745ca [USBHUB] USBH_FdoQueryBusRelations: Fix an off by one (#9298)
Fix an out of bounds heap read when compacting the ghost device list.

Change the loop condition from `GhostPort < DeviceRelations->Count` to
`GhostPort < DeviceRelations->Count - 1` so the array shift never reads
past the last valid entry.
2026-07-17 22:48:18 +03:00
Timo Kreuzer a4c863062f [RTL_UNITTEST] Call RtlpInitialize in RtlVirtualUnwind test
This prevents a critical section timeout.
2026-07-17 06:23:37 +00:00
Whindmar Saksit 30b02d038e [SYSSETUP][BOOTDATA] Unattended execute GuiUnattended:DetachedProgram , SetupParams:UserExecute (#9276)
This PR implements two of the three hooks that allows you to run custom
applications during 2nd-stage setup (the 3rd hook is `...\$OEM$\Cmdlines.txt`,
but that requires file copy operations, etc.)

- `DetachedProgram` is documented[^1] for NT4...2003; it is started before
  installation and `UserExecute` after.
- `UserExecute` is a great place to install VM Guest Additions, one reboot
  less and you have shared folders/clipboard on the first normal boot.

[^1]: https://web.archive.org/web/20090902145959/http://technet.microsoft.com/en-us/library/cc757642(WS.10).aspx
2026-07-16 23:22:27 +02:00
Whindmar Saksit a5f51269c8 [SHELL32] Add FolderItems3 support (move/copy directory tree) (#9235)
- Added copy/move support for FolderItems collections.
- Added support for InvokeVerbEx on FolderItems collections.
- Added filter support for FolderItems collections.
2026-07-16 15:58:14 +02:00
Justin Miller 1b460291e2 [NTOS:IO] Fix a small bug in PiUpdateDeviceState (#9290)
technically an adjustment to commit cf0bc1c.

CORE-17519
2026-07-14 22:07:42 -07:00