Commit Graph

3695 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
Eric Kohl
a650304371 [MMC_NEW] Save node data as well 2026-09-22 00:42:30 +02: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
Eric Kohl
ba8573ea72 [MMC_NEW] Add the recent files list to the file menu 2026-09-20 21:06:53 +02: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
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
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
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
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
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
91b67af002 [RAPPS][ZIPFLDR] Improve build generation and ZLIB usage (#9522) 2026-09-14 22:02:44 +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
Vitaly Orekhov
3de81ae0c5 [EXPLORER] Fix a missed format specifier in the logger function (#9535)
Add a missing string format specifier to the ERR call.

Addendum to commit aba47033dd (PR #8577).
2026-09-13 16:42:00 +02:00
Eric Kohl
752f620e9a [MMC_NEW] Move the root of the snap-in tree to the main window
- Fix File/New command. This command closes all views, deletes the snap-in
  tree, creates a new root folder snap-in and finally creates a new root view.
- Implement the Windows/New Window command. This command just creates a new
  root view.
- Update the main window title.
- Adjust the options dialog accordingly.

Hint: Running mmc_new might fail on ReactOS because of the missing folder
      snap-in. I will add some dummy/test snap-in skeletons including the
      folder snap-in next.
2026-09-13 12:05:00 +02:00
Eric Kohl
d3c8e2733c [MMC_NEW] Add the console options dialog 2026-09-12 20:16:11 +02:00
Eric Kohl
bce492a2c2 [MMC_NEW] Add customize dialog and console controls
And update the toolbar bitmap.
2026-09-12 11:41:56 +02:00
Eric Kohl
9fb45d1886 [MMC_NEW] Add the Toolbar and some Buttons 2026-09-10 00:41:46 +02:00
Eric Kohl
86f1b4272d [MMC_NEW] Implement the Window Cascade, Tile and Arrange functions 2026-09-08 20:28:02 +02:00
Eric Kohl
3127ca03fb [MMC_NEW] Move the snapin root pointer and implement register and unregister for views
- MMC maintains one snapin tree per instance. Each console is just a view of
  this tree. Therefore I moved the snapin root pointer from the console window
  to the main window.
- Implement the register and unregister functions for the view and a common
  UpdateViews function that call UpdateView for each registered view.
2026-09-07 23:17:11 +02:00
Eric Kohl
3812a9525c [MMC_NEW] Implement the Snapin Cache and the About dialog
Add the missing files!
2026-09-06 20:19:05 +02:00
Eric Kohl
f6117acaab [MMC_NEW] Implement the Snapin Cache and the About dialog
The Snapin Cache is used to store ISnapinAbout Information (Name, Description,
Vendor, Version, Bitmaps and Icon) for a Snapin. It is currently used by the
Add/Remove dialog.
2026-09-06 20:17:06 +02:00
Eric Kohl
9d989a975c [MMC_NEW] Add Mark Jansen's MMC Application skeleton (PR #1967)
This PR is a great start for a new C++ based MMC.
I have some improvements in my source tree which I want to add bit by bit.

My modifications to Marks PR are:
- Renamed ISnapInAbout to ISnapinAbout for compatibility reasons.
- Updated CMakeLists.txt
- Removed the patch to shellutils.h because it seems to already have been applied.
2026-09-06 12:41:11 +02:00
Dmitry Rantovov
b91b13899f [NETSH] Compare the stack entry against the tail, not the head twice (#9473)
RemoveContextFromStack tests pStackEntry == pContextStackHead twice
in the same condition, so the first branch takes every entry that happens
to be the head, not only the one that is head and tail at once.
The branch below it, the one that relinks pStackEntry->pNext->pPrev and
moves the head forward, is then unreachable. Removing the head of a stack
that has more than one entry sets both head and tail to NULL and frees
only that entry, so the remaining entries are lost and leaked.

The body of the first branch is what says which test was meant:
it clears both ends, and that is only correct for the single element case.

Compare the second test against pContextStackTail.

I found this by reading, not by hitting it in a running netsh session,
so I have not confirmed the leak on a live context stack.

Reviewed-by: Whindmar Saksit <whindsaks@proton.me>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Eric Kohl <eric.kohl@reactos.org>
Signed-off-by: Dmitry Rantovov <rantovov5@gmail.com>
2026-09-05 19:56:13 +03:00
Whindmar Saksit
8d44ccdd5f [EXPLORER][SHELL32] Fix crash when tray icon with active balloon is removed (#9332)
CORE-20685
2026-09-04 16:50:05 +02:00
Whindmar Saksit
8e4de4a184 [MMC] Mmc .msc file launcher (#9468)
CORE-16431
2026-09-04 16:47:13 +02:00
Hermès Bélusca-Maïto
437759f505 [SMSS][CSRSRV] Improve debug tracing on subsystem session-related callbacks (#9477)
Note: The debug-logged API names corresponding to the callbacks come
from the SMSS and CSRSRV Windows checked builds, and cross-checked
with the System Informer phnt headers[^1][^2].

[^1]: https://ntdoc.m417z.com/smapinumber
[^2]: https://github.com/winsiderss/systeminformer/blob/master/phnt/include/ntsmss.h
2026-09-02 22:30:56 +02:00
Hermès Bélusca-Maïto
39a1f3a8f4 [SMSS] SmpApiLoop(): SEH-wrap the SmpApiDispatch[] routine calls (#9477)
If any one of them crashes, this will emit a diagnostic message
before taking down SMSS.

SAL2-annotate `SmpUnhandledExceptionFilter()`.
2026-09-02 22:30:55 +02:00
Hermès Bélusca-Maïto
f255c9f046 [SMSS] Improve the SmpTerminate() routine a bit (#9477)
- Use SAL2 annotations.

- When terminating the process if the hard error did not already,
  prefer using `Parameters[1]` that contains the actual failure code,
  instead of what `NtRaiseHardError()` returned.
2026-09-02 22:30:39 +02:00
Vitaly Orekhov
aba47033dd [EXPLORER] Implement volume button controls (#8577)
This provides a more convenient way to adjust system volume: through media buttons!
Handles `APPCOMMAND_VOLUME_MUTE`, `APPCOMMAND_VOLUME_UP`,
and `APPCOMMAND_VOLUME_DOWN` notifications.

CORE-12323
2026-09-02 22:15:44 +02:00
Hermès Bélusca-Maïto
8f5a60b287 [SMSS] SAL2-annotate SmpApiLoop() 2026-09-01 21:45:46 +02:00
Hermès Bélusca-Maïto
b6bdcab9d0 [SMSS] Centralize some Windows-specific hardcoded strings. 2026-09-01 14:20:24 +02:00
Hermès Bélusca-Maïto
0a2244b0b5 [SETUP:REACTOS][SYSSETUP][NETSHELL] Don't use GWLP_USERDATA for storing dialog boxes private data
The `GWLP_USERDATA` window data is reserved for per-class data, thus,
may be used by the dialog box class itself. Instead, use the dedicated
`DWLP_USER` for storing custom per-dialog data.

For more information, see:
https://devblogs.microsoft.com/oldnewthing/20050303-00/?p=36293
https://devblogs.microsoft.com/oldnewthing/20061010-06/?p=29433
https://devblogs.microsoft.com/oldnewthing/20140203-00/?p=1893
2026-08-31 18:06:45 +02:00
Hermès Bélusca-Maïto
12d3186ce7 [SETUP:REACTOS][SYSSETUP] No need to use GetThreadId()
The thread ID can already be retrieved from the `CreateThread()`
calls done by these modules, so just use it instead.
2026-08-31 18:05:38 +02:00
Hermès Bélusca-Maïto
f69f04bc67 [USERINIT] Rewrite and fix GetLayoutName() (#9431)
- Allow specifying the length of the output `pszName` buffer.

- Reduce the number of character buffers required.

- Simplify parsing the "Layout Display Name" value, of the form:
  "@file_path,-resID" . Positive resource ID isn't handled.

- Use `LoadLibraryExW(..., LOAD_LIBRARY_AS_DATAFILE)` for loading
  the specified DLL for retrieving its resources.

- Don't leak the loaded DLL when the `LoadStringW()` call succeeds.

- Don't leak the opened registry key when the "Layout Text" value
  retrieval fails.
2026-08-28 15:02:18 +02:00
Hermès Bélusca-Maïto
badbcd2844 [USERINIT] Improve default keyboard layout fallback when changing the language (#9431)
In `SelectKeyboardForLanguage()`, fall back to "English (United States)"
keyboard layout if no other suitable layout is found.
2026-08-28 15:02:16 +02:00
Hermès Bélusca-Maïto
c45c83a4dc [USERINIT] Fix the current KLID matching in CreateKeyboardLayoutList() (#9431)
Use case-insensitive matching for comparing the current KLID with
the enumerated ones.

For example on my machine, `GetKeyboardLayoutNameW()` would return
"0000040C" (French AZERTY layout) in capital hex number, while the
registry `HKLM\System\CurrentControlSet\Control\Keyboard Layouts`
subkeys specify the layouts in lowercase hex, which is of course
perfectly valid: the French AZERTY layout would be "0000040c".

Without the fix, there wouldn't be any matching, and as a result,
the correct keyboard layout wouldn't be selected.
2026-08-28 15:02:14 +02:00
Hermès Bélusca-Maïto
82d0c38495 [USERINIT] Minor refactor for keyboard-layout-related functions (#9431)
- `WCHAR szLayoutId[9]` --> `WCHAR szKLID[KL_NAMELENGTH]`

- Don't use the `LCID` type for unrelated things: namely,
  keyboard layout IDs.

- Simplify `CreateKeyboardLayoutList()` a little.
2026-08-28 15:02:06 +02:00
Whindmar Saksit
268f687a79 [W32TIME] Support DllServer re-registration and unregistration (#9442)
CORE-20747
2026-08-26 00:33:22 +02:00
Vitaly Orekhov
d19eda648c [AUDIOSRV] Broadcast winmm_devicechange to all desktops and applications (#9264)
This is an undocumented WinMM specific message that tells whether the
`KSCATEGORY_AUDIO` devices were installed or removed. wParam and lParam
are not used by this message.

It's needed for #8577 to get notification on default audio output device change.

CORE-12323
2026-08-22 19:42:20 +03:00
Ratin Gao
ef8bcd3fbe [EVENTLOG][FMIFS][KERNEL32][APITESTS] Fix leaks after calling RtlDosPathNameToNtPathName_U (#8559)
Misc. changes:
- [FMIFS] Fix source file encoding to UTF-8
- [KERNEL32] Fix SAL annotation for BasepMapFile
- [NTUSER] Fix a debug print incorrectly mentioning RtlDosPathNameToNtPathName_U

This fix is similar to the previous in 657f728767 (#5592).
2026-08-19 20:00:46 +03:00
Mark Jansen
5930e028e9 [RAPPS] Remove readonly flag from the downloaded database file
CORE-20743
2026-08-19 14:32:42 +02:00
Eric Kohl
1d6dae3bb2 [DHCPCSVC] DhcpRequestParams: Support vendor options 2026-08-15 22:32:44 +02:00
Hermès Bélusca-Maïto
b299049410 [USERINIT] livecd.c: Change default actions in unattended mode, or if the installer cannot be found (#9363)
- Just after initially caching the path to the ReactOS installer, check
  whether an unattend.inf file can be found in its directory; otherwise,
  fall back to an unattend file in the current ReactOS directory.

- If this unattend.inf file specifies to run an unattended setup
  (`UnattendSetupEnabled` value set to `"yes"`), automatically start the
  ReactOS installer -- instead of starting the live environment desktop.

- If the user presses Ctrl+Shift+F10 however, disable unattended setup
  (suggestion to override the behaviour with a keypress from Whindmar Saksit).

NOTE: in the `WM_INITDIALOG` dialog handlers, use `SendMessageW`
to simulate the button presses. This also allows the invocation
of `EndDialog()` (from the button command handlers) while the
`WM_INITDIALOG` message is handled, so that the USER dialog manager
can then directly close the dialog without showing it first.
2026-08-14 20:05:29 +02:00
Hermès Bélusca-Maïto
fd764346de [SETUP:REACTOS][USETUP] Improve unattended setup support (#9363)
- Make unattended setup work for the 1st-stage GUI setup:

  1. Select the partition where to install ReactOS, partitioning empty
     space if necessary;

  2. Format the selected partition (if requested) with the correct
     filesystem, without showing the formatting dialog;

  3. Jump over the wizard pages -- some of them preinitialize the data
     before doing the jump. Unnecessary pages like the Welcome page,
     the Install type selection page, etc. aren't included in the wizard
     pages list in this mode.

  In case some unattended information isn't complete (or incorrect),
  halt on the concerned page(s) and allow the user to go back to the
  previously skipped pages.

- Remove an unattended setup hack for volumes format.

  Even in unattended setup and `FormatPartition == 0`, if the user chose
  to format the partition in the format dialog that pop up, then we *MUST*
  honour this choice! Otherwise, we would also have to ignore volume check
  for that volume (because we would get an assertion that the volume isn't
  formatted), **AND**, we wouldn't be able to install ReactOS there anyway
  because the volume isn't formatted!
2026-08-14 20:05:29 +02:00
Hermès Bélusca-Maïto
7a2ea5acb3 [SETUP:REACTOS] drivepage.c: Minor simplifications 2026-08-14 20:04:43 +02:00