Commit Graph
89248 Commits
Author SHA1 Message Date
Ahmed Arif c606fd79b1 [NTOS:FSRTL] Respect byte-range lock ownership (#9342)
FsRtlCheckLockForReadAccess() accepts access through an exclusive
byte-range lock when the IRP key matches, even if another process
owns the lock. FsRtlFastUnlockAll() likewise removes exclusive locks
without checking the Process argument.

Require both the key and requestor process for exclusive-read access,
and skip exclusive locks owned by other processes in FsRtlFastUnlockAll().
This matches the ownership checks already used by
FsRtlFastCheckLockForRead() and FsRtlFastUnlockAllByKey().

Reference:
- https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-_fsrtl_advanced_fcb_header-fsrtlfastchecklockforread
2026-07-29 21:54:44 +03:00
Hermès Bélusca-Maïto 3da59bca94 [SETUP:REACTOS] Tweak the Summary page controls
- Tweak the dimensions of the read-only editboxes.

- Tweak the Confirmation checkbox: adjust its dimensions, remove some
  artificatial newlines, and adjust the wording in some translations.
2026-07-29 16:49:17 +02:00
Hermès Bélusca-Maïto ba58e3f528 [SETUP:REACTOS] Improve navigation in the setup wizard
- Support double-clicking on the Installation type page radio buttons.

  The Installation type page offers two self-excluding options:
  "Install ReactOS", and "Upgrade an existing ReactOS installation",
  and no other controls are available (except for the wizard navigation
  buttons). Thus, we can implement the UI feature of supporting double-
  clicked radio buttons as an abbreviation for "select + Next".

  For this, add the `BS_NOTIFY` style to both radio buttons, so as to
  receive the `BN_DBLCLK` notification via the `WM_COMMAND` message.

  Based on a suggestion by Raymond Chen,
  https://devblogs.microsoft.com/oldnewthing/20050804-10/?p=34713

- Ensure the correct radio button is selected when activating the
  Installation type page:
  ensure the "Install ReactOS" radio button is checked if we don't have
  a selected installation (default case), which can also happen if the
  user clicked on the "Do not upgrade" button on the Upgrade/Repair
  selection page, then went back.

- In the Upgrade/Repair selection page, go to the next page if the user
  double-clicked on a listed installation.

- In the Drives/Partitions page:
  * support pressing DELETE key to delete an existing partition;
  * support pressing ENTER key to install ReactOS on a eligible
    partition;
  * enable the "Create" partition button only if the selected disk region
    is not partitioned, and can be partitioned according to the disk's
    partitioning scheme (e.g. for MBR disks, no more than 4 primary
    partitions).
2026-07-29 16:49:15 +02:00
Hermès Bélusca-Maïto cb61fd4d71 [SETUP:REACTOS] Slight WM_COMMAND handlers improvements
- Explicitly check for `BN_CLICKED` notification when handling
  single-click on standard push-buttons.

- Return TRUE explicitly from `WM_COMMAND` in the _dialog_ procedures
  when the message is handled and no extra default processing is needed.

- Reduce some extra indentation when possible.
2026-07-29 16:49:14 +02:00
Ahmed Arif 4c3d15abe6 [CLANG][SDK] Add the llvm-compat runtime shim library (#9094)
llvm-mingw's static runtime (libc++, libmingwex, libc++abi, libunwind)
references symbols the NT 5.2 export surface does not provide. Add a
static library, linked into the Clang runtime chain below
DLL_EXPORT_VERSION 0x601, providing:

- C99 vsnprintf/snprintf on top of _vsnprintf/_vscprintf.
- __imp_* aliases binding dllimport references to the static CRT
  definitions instead of ucrtbase import thunks, which collide with
  them (lld: "<sym> was replaced").
- K32EnumProcessModules, forwarded to psapi's EnumProcessModules.
- The Win7 SRW lock and Vista condition variable surface, bound to the
  RTL implementation linked statically from rtl_vista. Modules get one
  self-contained, consistent synchronization implementation (ReactOS'
  lock layout is not Windows-compatible), no kernel32_vista.dll
  dependency, and stay runnable on any Windows version. Static SRW
  linking suggested by Timo Kreuzer.

Address review feedback on the llvm-compat shims:

sync_static.c now uses the proper SDK/NDK headers with WINAPI/NTAPI, imp_alias.h
moved to sdk/include/reactos and fixes the msvcrtex slot decorations too, and a
new InitOnceExecuteOnce shim lets us drop libkernel32_vista from the interface.
2026-07-29 11:27:59 +00:00
Alex Mendoza 7658029392 [VBEMP] Return NO_ERROR in VBESetPowerState (#9350)
Fix incorrect status code returned by VBESetPowerState()
in the VBE miniport driver.

- VBESetPowerState() returned `VBE_SUCCESS` (`0x4F`, raw VESA BIOS AL
  success code) instead of `NO_ERROR` on success, so callers checking for
  `NO_ERROR` would treat every successful DPMS power-state change
  as a failure. Change it to `NO_ERROR`.
- Change annotations to SAL2 in the source and header.
2026-07-28 22:52:45 +03:00
Whindmar Saksit 4fecc908e7 [SHELL32] All SHELLSTATE members must be initialized before writing to the registry (#9293)
A more reliable fix.

CORE-20585
2026-07-28 16:14:13 +02:00
Timo Kreuzer 29e8ed11af [KMTEST] Fix ObType test to use NT6 callbacks for ReactOS 2026-07-28 12:16:32 +00:00
Timo Kreuzer 07217d3245 [NDK][NTOS] Change Object callback types to NT6 style
This is required to support the NT6 access flags THREAD_QUERY_LIMITED_INFORMATION and THREAD_SET_LIMITED_INFORMATION.
2026-07-28 12:16:32 +00:00
Timo Kreuzer 9675f756ce [NDK] Fix definition of OB_CLOSE_METHOD 2026-07-28 12:16:32 +00:00
Stanislav Motylkov a05ef98c2a [NETSHELL] Improve usability by keyboard
- Allow exiting from "Network Connection Details" dialog
  with Enter (using DEFPUSHBUTTON), Esc and Alt+F4 (using IDCANCEL)
- Add extended style LVS_EX_FULLROWSELECT to the listview, as in Windows

Misc. changes:
- Minor code rearrange, removing one obvious comment
- Czech (cs-CZ): Fix letter capitalization
- French (fr-FR): Fix accelerator key
- Hebrew (he-IL): Fix accelerator key

CORE-12323
2026-07-28 14:22:43 +03:00
Stanislav Motylkov 56746c29df [DESK] Appearance: Apply the Shell Icon Size properly (#9336)
- Implement 3-state checkbox for the use of large icons
- Add missing registry value write on applying a scheme
- Misc: Update preview on saving "Effects" settings (for flat menus)

CORE-12905
2026-07-28 14:20:23 +03:00
Hermès Bélusca-Maïto 096c0aa9d4 [WELCOME] Update the ExpandInstallerPath() information
Update its parameter names, SAL2 annotations, and Doxygen comment.
2026-07-27 20:08:16 +02:00
Hermès Bélusca-Maïto 064dd8f832 [USERINIT] Locate and cache early the path to the ReactOS installer when starting in livecd mode
- Move `ExpandInstallerPath()` from userinit.c to livecd.c, and update
  its SAL2 annotations and Doxygen comment.

- Make `StartInstaller()` directly use the cached ReactOS installer path.

- This avoids invoking yet again `ExpandInstallerPath()` when trying to
  locate the installer also for the aim of determining whether to disable
  the "Install" button.
2026-07-27 20:06:02 +02:00
Hermès Bélusca-Maïto d524789ed0 [USERINIT] Simplify the LiveMedium check
Use the standard way of checking for the existence of
the `HKLM\SYSTEM\CurrentControlSet\Control\MiniNT` key.
Addendum to commit 8c9a41db96 (r70607).
2026-07-27 19:32:27 +02:00
Hermès Bélusca-Maïto b1bd421163 [UMPNPMGR] Simplify the LiveMedium check
Use the standard way of checking for the existence of
the `HKLM\SYSTEM\CurrentControlSet\Control\MiniNT` key.
Addendum to commits 8fabb29ed9 and 9fa8028ae4.
2026-07-27 19:32:27 +02:00
Hermès Bélusca-Maïto 8dce28564a [UMPNPMGR] IsConsoleBoot(): Check for RegOpenKeyExW() failure before continuing 2026-07-27 19:32:26 +02:00
Ahmed Arif 98256a4f5d [NTOS:MM] Allow contiguous-memory frees at DISPATCH_LEVEL (#9349)
MmFreeContiguousMemory() is callable at up to DISPATCH_LEVEL,
but MiFreeContiguousMemory() used PAGED_CODE(), which incorrectly asserted
above APC_LEVEL in checked builds.

Replace it with an assertion that enforces the exported IRQL contract.
2026-07-27 17:44:40 +03:00
Ahmed Arif 28373a9f84 [NTOS:IO] Do not free the active VPB (#9343)
IopDereferenceVpbAndFree frees a zero-reference VPB only while it is still
installed in RealDevice->Vpb. This can leave the device with a dangling
VPB pointer while detached VPBs are retained.

Reverse the identity test so only a detached, nonpersistent VPB is released
after its reference count reaches zero.

Reference:
- https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_vpb
2026-07-27 15:48:33 +03:00
Ahmed Arif 6c515f5aa6 [NTOS:MM] Release system image PTEs on unload (#9078)
MmUnloadSystemImage() had an explicit leak placeholder for driver images.

Implement the MmUnloadSystemImage() that performs matching teardown
for the image mappings, releasing the reserved system PTE range.

Also fix similar leak in MiLoadImageSection() by releasing image mappings
after load failures.

CORE-8294

Note that the driver images loaded at boot, which were not reloaded by
MiReloadBootLoadedDrivers(), remain at their loader-assigned addresses
and do not own system PTEs.
2026-07-27 15:20:39 +03:00
Mohammad Amin Mollazadeh ec4af44cff [RPCRT4] Sync rpcrt4.spec to Wine-10.0 (#9338) 2026-07-27 12:12:15 +02:00
Dmitry Borisov af36fc655d [NVNET] Fix two typos (#9345)
- Fix ETH_IS_EMPTY macro condition (5th octet)
- Add missing assignment of maximum VLAN ID

CORE-15872
2026-07-26 19:52:51 +03:00
Stanislav Motylkov 8f5475054c [NETSHELL] Fix overlapping text on top of edit in IDD_NETWORKDOMAINPAGE
Reduce "Workgroup or Domain Name:" height to avoid IDC_DOMAIN_NAME overlap,
with a value that is enough to fit the text vertically.

CORE-20694
2026-07-26 01:16:43 +03:00
Stanislav Motylkov 4eb9e87f09 [USETUP] Fix Albanian (sq-AL) translation
Remove a deprecated ERROR_FIND_SETUPDATA, which was supposed
to be removed in a7afba7703,
however it was skipped probably due to broken encoding.

Noticed in 7090cf7ebc / 7f7df51c62.
2026-07-26 01:16:26 +03:00
Stanislav Motylkov 7f7df51c62 [USETUP] Fix broken OEM encoding of comments
Partial revert of commit 7090cf7ebc.
2026-07-26 01:16:12 +03:00
Jose Carlos Jesus 90f29bc22f [INPUT] Update Portuguese (pt-PT/pt-BR) translation (#9321)
Fix IDS_US_LAYOUT string, which should always be "US".
2026-07-26 00:26:15 +03:00
Ahmed ARIF 6799d7e96e [ARM64][SDK] Address intrinsic review feedback 2026-07-25 17:46:38 +00:00
Ahmed ARIF 658328ca24 [ARM64][SDK] Fix MinGW intrinsic declarations 2026-07-25 17:46:38 +00:00
Ahmed ARIF f6efc98b37 [ARM64][SDK] Add MinGW intrinsics support
Add the ARM64 MinGW intrinsics and SDK constants validated by the ARM64 bring-up work.
2026-07-25 17:46:38 +00:00
Amine Khaldi e05d78ede0 [OLEAUT32] Sync with Wine 10.0. CORE-20595 2026-07-25 17:55:19 +01:00
Amine Khaldi 5821d9d8a3 [PSDK] Update oleauto.h. CORE-20595 2026-07-25 17:55:19 +01:00
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