Commit Graph

89562 Commits

Author SHA1 Message Date
Eric Kohl
9dc3ca8720 [MMC_NEW] Implement the recent files list properly and pretty print the menu items 2026-09-22 23:41:04 +02:00
Hermès Bélusca-Maïto
adeab17b05 [NTOS:CONFIG] cmconfig.c: Minor formatting + improve some comments
Add a comment about `ArcSystem` component type normalization.
2026-09-22 22:43:29 +02:00
Hermès Bélusca-Maïto
396019984c [NTOS:CONFIG] Fix CmpRemoveFromHiveFileList() management (#9564)
Supplement to commit f09f448d95 (r57263), CORE-6491


## Problem description:

The support for unloading registry hives using the `NtUnloadKey2()` and
`CmUnloadKey()` functions has been introduced in commit 3507ef2ac6 (r68295),
CORE-3094.
It also brought the first usage of the `CmpRemoveFromHiveFileList()` routine,
previously implemented in commit f09f448d95 (r57263), in order to remove the
registry value associated to a registry hive, listed under the registry key
`HKLM\SYSTEM\CurrentControlSet\Control\hivelist`, added by a previous
`CmpAddToHiveFileList()` invocation when the hive was initially mounted.

The problem was that in `CmUnloadKey()`, the `CmpRemoveFromHiveFileList()`
routine was invoked *AFTER* a successful call to `CmpUnlinkFromMasterHive()`.
Because of this, the routine was looking at an alread invalidated `LinkData`
hive node. In doing so, the `LinkName` it deduced, and the hive path it
constructed to lookup into the `hivelist` registry key, could become invalid:
either from the name data being read, or, because the `KeyNode.Flags` value
became invalid, invalidating the `KEY_COMP_NAME` flag for example, thus
affecting the readability of the key name.

In ReactOS, the problem almost never showed up, except during its 1st-stage
installation, where the target `SOFTWARE` hive, mounted as:
`\Registry\Machine\USetup_Software`, remained listed in the `hivelist`
registry key, while the hive itself was already perfectly unloaded.
As it turned out, the `SOFTWARE` mount link key was already invalidated,
and the `USetup_Software` name was read incorrectly, and the code was
generating an invalid hive path string to be looked up.

Note that invoking `CmpRemoveFromHiveFileList()` *AFTER* a successful
`CmpUnlinkFromMasterHive()`, is an action similar to what is done in
Windows 2003 SP1 and later; however, this would have required reconstructing
the hive's path just before unlinking it. (On Windows 2003 RTM and before,
`CmpRemoveFromHiveFileList()` is invoked *BEFORE* `CmpUnlinkFromMasterHive()`
in symmetry to what is done in the hive linking process. This has been
changed on SP1+ so as to keep the hive linking information in the registry
up until the hive unlinking has been successfully done.)


## Problem resolution:

To resolve this issue, instead of reconstructing the hive path just before
unlinking the hive, as done in Windows 2003 SP1 and SP2 (and removing it from
the hive list later), we adopt an approach _similar_ to that of Vista+, by
caching the hive path string initially constructed by `CmpAddToHiveFileList()`
in the `CMHIVE` structure into a new `HiveRootPath` member.

The `CMHIVE::HiveRootPath` member is absent in Windows 2003,
https://www.vergiliusproject.com/kernels/x86/server-2003/sp2/_CMHIVE
and is introduced with Windows Vista RTM,
https://www.vergiliusproject.com/kernels/x86/windows-vista/rtm/_CMHIVE
2026-09-22 15:22:54 +02:00
Hermès Bélusca-Maïto
dedb46771d [NTOS:CONFIG] cmhvlist.c: Code style changes (#9563)
- SAL2-annotate the functions.

- `HiveListValueName` --> `HiveListKeyName`, since it is a
  registry key name. And make it static to this file.

- Make `CmpGetHiveName()` local to that file as well, since
  it is not used anywhere else.
2026-09-22 15:14:05 +02:00
Eric Kohl
a650304371 [MMC_NEW] Save node data as well 2026-09-22 00:42:30 +02:00
Hermès Bélusca-Maïto
4ab7fb63af [NTOS] Fix (un)init_ai_lize typo 2026-09-21 21:40:27 +02:00
Justin Miller
cf89458d9e [HALX86][SDK] Introduce the Legacy PC Arbiter (PIR, PIC) (#9527)
Needed in order for arbiter to note\ insta-break things on legacy HAL.
This is PURELY for legacy machines booting without MPS, which we dont support MPS anyway so this is how legacy HAL is going to boot at all for the time being
2026-09-20 19:09:19 -07:00
Eric Kohl
41e2904b9b [MMC_NEW] Implement the File Open command
The msc file gets loaded into a dom, but the dom does not get processed yet.
2026-09-20 23:13:58 +02:00
Justin Miller
9b4cd0b503 [NTUSER] Delete gpDeviceInfoListMutex resource on shutdown (#9561)
Fixes a shutdown crash caused by a missing resource deletion. CORE-20777
2026-09-20 22:34:28 +03:00
Eric Kohl
ba8573ea72 [MMC_NEW] Add the recent files list to the file menu 2026-09-20 21:06:53 +02:00
Mohammad Amin Mollazadeh
2def708122 [KERNEL32][APITESTS:KERNEL32] Implement SetSearchPathMode (#9244)
This commit implements SetSearchPathMode based on official documentations from Microsoft and Wine tests.

This is different from #3665 since it updates SearchPathW to use the configured Search Path Mode, while the older PR only introduces SetSearchPathMode with desired outputs per input. Also improves thread safety.

CORE-17586
2026-09-20 16:53:49 +00:00
Eric Kohl
b52b9f2c6a [MMC_NEW] Fix return type of CMainWnd::SaveMscFile 2026-09-20 15:20:15 +02:00
Eric Kohl
18ae0e28b0 [MMC_NEW] Implement MSC file creation
- Save the MMC and view configurations.
2026-09-20 10:45:07 +02:00
Eric Kohl
c5f151a4a9 [MMC_NEW] Split the options dialog file and add missing settings 2026-09-19 15:12:15 +02:00
Whindmar Saksit
733ae5fa42 [SHDOCVW] Handle Delete accelerator in the Explorer tree (#9551)
CORE-20762
2026-09-18 23:16:38 +02:00
Justin Miller
4dabb9e582 [PCIX] Decode fixes and 4GB+ region bar support (#9545)
I did notice our PCIX hack flags seem to be compatible with what windows is trying to do, I've kept that. Though I'm only really checking against modern windows here. I may reduce our flag list later, also i noticed our usage of them was a bit off in how we decode some information; This broke VGA for months in my development of this driver.

* [PCIX] Refuse to disable decodes for the devices Windows keeps decoding
* [PCIX] Let a 64-bit BAR be placed above 4GB
* [XDK] Enable the MemIo vista+ APIs we're really need
* [PCIX] Build a BAR requirement from named bounds
* [PCIX] Treat a BAR that implements no address bits as absent
2026-09-18 01:08:31 +00:00
Eric Kohl
fc48c2b5e1 [MMC_NEW] Fix menu items and the add/remove dialog 2026-09-18 00:48:15 +02:00
Whindmar Saksit
a62d9d0476 [CONTROL][NETPLWIZ] Fix Control.exe userpasswords[2] commands (#9529)
CORE-20775
2026-09-17 11:22:15 +02:00
Ahmed Arif
d09a360060 [NTUSER] Repaint the whole frame when its geometry changes (#9495)
Request a full non-client repaint after frame geometry changes to fix
stale or missing caption buttons.

Fixes regression introduced in b38db9dd23 (#9126).

CORE-5877 CORE-16672 CORE-20769
2026-09-16 14:40:42 +03:00
Ahmed Arif
59d9723951 [USER32_APITEST] Add test for NcPaintRgn (#9495)
Collect the WM_NCPAINT regions a window is given when it gets maximized
and then restored, and check that no part of the non-client frame
was left out of them.

This covers a regression for non-client repaint regions. CORE-20769
2026-09-16 14:40:42 +03:00
Justin Miller
86c1d826a0 [DEVMGR] Show the vector of message interrupts (#9546)
A raw MSI descriptor stores the message count where a line interrupt keeps its level, so print the vector instead. Label message interrupts as PCI.
it's a bit messy since we dont globally expose the resource entries. but it'll work. I made it clear what was going on in the comment
2026-09-16 11:27:12 +00:00
Alex Mendoza
0345c201b4 [HALX86] Add header file for x2APIC (#9441)
Create a new HAL module for x2APIC support, starting with its private
header! x2APIC and xAPIC are sadly not register compatible, so this lives
as its own module instead of extending the existing APIC.

This adds the following:
- MSR base/offset defines,
- the x2APIC `APIC_BASE_ADDRESS_REGISTER` and
  `APIC_INTERRUPT_COMMAND_REGISTER` layouts
- MSR based register access helpers,
- and declarations for `X2ApicIsSupported`/`X2ApicEnable`
  (they will be implemented in another PR)
2026-09-16 13:14:32 +03:00
Justin Miller
da13f3ca82 [USBPORT] Use the companion miniport when powering companion ports (#9547)
The EHCI root hub called its own miniport routines with each companion controller's extension.
2026-09-16 05:49:09 +00:00
Justin Miller
7baff0a933 [PCIX] Discover the PCI Express capability and extended capability list (#9543)
Read the PCI Express caps, going to be useful for future PRs
2026-09-15 23:56:40 +00:00
Eric Kohl
0a24d7ad9a [MCC_NEW] Prepare to build a snapin tree 2026-09-15 22:47:03 +02:00
Whindmar Saksit
db7342c365 [MMCSHEXT] Create icon extractor for .msc files (#9500) 2026-09-15 19:38:12 +02:00
Hermès Bélusca-Maïto
a97929d2e6 [FREELDR:ARCH] Move platform-independent code from arch/i386/hwpci.c into a separate file (#9541)
The new arch/hwpci.c file is to be included in compilation of any
FreeLdr port for platforms that are known to have PCI buses.

Will be used for PCI bus detection on UEFI, see PR #9374.

+ Update the source file headers.
2026-09-15 17:41:53 +02:00
Justin Miller
e51b1c1dbf [PCIX] Introduce basic ECAM Support into PCIX (#9542)
Introduces ECAM support into PCIX, also fixes a small bug I found while using it.
introduced an AMD k8 work around.
I know we should have some kind of compatibility thing like errata, but we don't have a good way to do that yet. and I like being able to boot.

Not like we're the first to do this either:
torvalds/linux@d6ece54

Fix a small registry bug too.
2026-09-15 09:37:27 +00:00
Mikhail Tyukin
516f0d538e [COMDLG32] Add manifest (#9540)
Add manifest to comdlg32 which I forgot to add in PR #8821 (9699568b70). Fixes "err:dlg32.c:81 failed to create activation context, last error 1814" spam in testbots. An example of this can be seen at https://reactos.org/testman/detail.php?id=92118306&prev=0
This currently does not affect anything else as comctl32 uses theming for v5.

JIRA issue: CORE-20586
2026-09-14 16:33:03 -04:00
Hermès Bélusca-Maïto
57ed600396 [USER32] Improve build generation (#9524)
It uses the libpng library.
2026-09-14 22:06:03 +02:00
Hermès Bélusca-Maïto
79dfca1d2d [CMAKE] Improve build generation (cont.) (#9524)
- WINDOWSCODECS uses the libjpeg, libpng, libtiff, and zlib libraries.
- MSXML3 uses libiconv, libxml2, and libxslt libraries.
- NFSD uses the libtirpc library.
- BCRYPT, SCHANNEL use the mbedtls library.
2026-09-14 22:06:02 +02:00
Hermès Bélusca-Maïto
47a91101ac [CMAKE] dll/3rdparty dynamic libraries: Use target_include_directories() (#9524)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- For dynamic library (DLL) modules, this also takes the advantage of the
  inherited interface include directories for their associated import and
  delay-import libraries.

Libraries:
LIBJPEG, LIBPNG, LIBTIFF, LIBTIRPC, LIBXSLT, MBEDTLS.
2026-09-14 22:06:01 +02:00
Hermès Bélusca-Maïto
d9d6f0917e [SETUP:REACTOS][USETUP][SETUPLIB_UNITTEST] Improve build generation (#9524)
They use the setuplib library.
2026-09-14 22:05:59 +02:00
Hermès Bélusca-Maïto
a8806a34f8 [SETUPLIB] Use target_include_directories() (#9524)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- Explicitly specify `STATIC` in `add_library()` for static libraries.

- Use MODULE instead of SHARED for the DLL. See commit 23373acbb9 for more details.
2026-09-14 22:05:53 +02:00
Hermès Bélusca-Maïto
247da2e192 [CMAKE] Add interface include directories for import (and delay-import) libraries (#9524)
Inherit the interface include directories of a module when generating
its import (and delay-import) libraries.
2026-09-14 22:05:50 +02:00
Hermès Bélusca-Maïto
d46172032c [NTOS] Improve build generation (#9523)
- NTOS kernel uses the arbiter and cmlib libraries.

- Explicitly add sdk/lib/rtl to the include directories
  for avlsupp.c inclusion in mm/ARM3/vadnode.c
2026-09-14 22:04:01 +02:00
Hermès Bélusca-Maïto
b5db92a506 [CMAKE] Improve build generation (#9523)
User-mode:
- DNSAPI uses the adns library.
- CONSOLE.CPL uses the concfg library.
- DISKPART, PING use the conutils library.
- ADVAPI32 uses the cryptlib library.
- EVENTLOG uses the evtlib library.
- NTVDM uses the fast486 library.
- HID uses the hidparser_um library.
- WINEMP3.ACM uses the libmpg123 library.
- OPENGL32 uses the mesa library.
- LOCALSPL uses the skiplist library.
- IPHLPAPI, WSHTCPIP use the tdilib library.
- TIMEDATE.CPL, SYSSETUP use the tzlib library.
- DRWTSN32, DXDIAG, SYSDM.CPL, SYSTEMINFO use the udmihelp library.
- CABINET, VFDLIB, dbghelp_apitest use the zlib library.

Drivers:
- PCIX uses the arbiter library.
- KSECDD uses the cryptlib library.
- I8042PRT uses the dmilib library.
- FTFD uses the freetype library.
- HIDPARSE uses the hidparser_km library.
- ATAPI, SCSIPORT, STORPORT, USBSTOR use the sptilib library.
- NETKVM uses the virtio library.
- BTRFS uses the zlib library.

Sound:
- backpln/audio_test use the libsamplerate library.
- KMIXER, mmixer_test, WDMAUD, WDMAUD.DRV use the libsamplerate and mmixer libraries.
2026-09-14 22:03:58 +02:00
Hermès Bélusca-Maïto
3fef582378 [CMAKE] Static libraries: Use target_include_directories() (#9523)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- Explicitly specify `STATIC` in `add_library()` for static libraries.

Libraries:
- dll/opengl: MESA
- sdk/lib/3rdparty: ADNS, LIBICONV, LIBMPG123, LIBSAMPLERATE, LIBXML2
- sdk/lib/drivers: ARBITER, HIDPARSER, MMIXER, SPTILIB, VIRTIO
- sdk/lib: CRYPTLIB, DMILIB, EVTLIB, INFLIB, SKIPLIST, TDILIB, TZLIB, UDMIHELP
- win32ss/user/winsrv: CONCFG
2026-09-14 22:03:55 +02:00
Hermès Bélusca-Maïto
91b67af002 [RAPPS][ZIPFLDR] Improve build generation and ZLIB usage (#9522) 2026-09-14 22:02:44 +02:00
Hermès Bélusca-Maïto
6c847bdb3b [ZLIB] Use target_include_directories() (#9522)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- Explicitly specify `STATIC` in `add_library()` for static libraries.
2026-09-14 22:02:40 +02:00
Hermès Bélusca-Maïto
a954404320 [FREELDR] Improve build generation (#9521)
- Remove unnecessary entries from the include directories list.
- UEFILDR: move NT/ROS loader files to uefildr module.
2026-09-14 21:59:42 +02:00
Hermès Bélusca-Maïto
b7aaf623e4 [CMLIB] Use target_include_directories() (#9521)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- Explicitly specify `STATIC` in `add_library()` for static libraries.
2026-09-14 21:59:37 +02:00
Hermès Bélusca-Maïto
e060e61f35 [HALX86] Improve build generation (#9519)
- Specify fast486 library inclusion only for the "components"
  sub-libraries that use it (lib_hal_generic, lib_hal_pc98,
  and lib_hal_xbox), using `target_link_libraries()`.

- In order for the dependencies (and the include directories)
  of the linked fast486 library to propagate up to the main HAL
  module linkage, don't add the "components" sub-libraries object
  libraries to the main HAL build target via `$<TARGET_OBJECTS:...>`,
  but instead via `target_link_libraries()`.

  This supplements the changes for the HAL made in commit 49286a6225
  (PR #3431).

- Remove unnecessary gcc library linking.
2026-09-14 21:57:57 +02:00
Hermès Bélusca-Maïto
c64455acf8 [FAST486] Use target_include_directories() (#9519)
- Use `target_include_directories()` in the libraries' CMakeLists.txt for
  exposing their include path to their users, so that these library users
  do not have to manually add these paths to their own CMakeLists.txt.

- Explicitly specify `STATIC` in `add_library()` for static libraries.
2026-09-14 21:57:56 +02:00
Hermès Bélusca-Maïto
27520a6fe9 [SACDRV] Explicitly add ntoskrnl/include to the include directories for internal/hdl.h (#9520) 2026-09-14 21:56:41 +02:00
Hermès Bélusca-Maïto
6c2ab4269f [NTDLL_APITEST] Limit the ntoskrnl/include directory usage only to ntdll_apitest (#9520) 2026-09-14 21:56:39 +02:00
Hermès Bélusca-Maïto
80d7d68665 [KEYBOARD][KDBHID][MOUHID][USB*][VIDEOPRT][UMKM] No need to add ntoskrnl/include directory (#9520) 2026-09-14 21:56:36 +02:00
Hermès Bélusca-Maïto
af191d74af [CMAKE] Cleanup include_directories() of unnecessary entries for some modules (#9520)
Cleanup for:
- base/applications: WINMINE, MSCONFIG_NEW, REGEDIT
- dll/shellext: ACPPAGE
- drivers/filesystems: CDFS, EXT2
- drivers/storage: RAMDISK, UNIATA
- win32ss: WIN32SS, WINEGDI
- sdk/include/psdk, sdk/include/reactos
2026-09-14 21:56:35 +02:00
Hermès Bélusca-Maïto
58a4c3cb25 [VFATXLIB] Remove unnecessary gcc library linking (#9520)
And since it's a static library, explicitly specify `STATIC` in `add_library()`.
2026-09-14 21:56:29 +02:00
Hermès Bélusca-Maïto
db6d5bee33 [BOOTDATA][PCIX][SDK] Fix minor "typos" (#9539)
- "PCI BIOS" instead of "ACPI BIOS".
- "PIR$" -> "$PIR".
2026-09-14 21:52:51 +02:00