Commit Graph

3452 Commits

Author SHA1 Message Date
Hermès Bélusca-Maïto
8c9039bbd4 [WINLOGON] Workaround buggy 3rd-party DLLs that use a wrong notification handler calling convention (#8640)
CORE-20279

PRELIMINARY REMARK: The described bug and code workaround only applies
for x86 32-bit builds.

----

While the Winlogon notification handlers[^1] actually use a `STDCALL`
calling convention, which can be trivially verified by debugging the
official Windows <= 2003 winlogon.exe and its notification extensions,
there exist 3rd-party Winlogon notification DLLs, like the `Ati2evxx.dll`
one from AMD/ATI XP video drivers, that use a `CDECL` calling convention,
or an invalid number (zero) of parameters.

I think the reason why this happens is as follows.
The official documentation[^1] indicates that the handlers have the
following prototype:
```c
void Event_Handler_Function_Name(
  _In_ PWLX_NOTIFICATION_INFO pInfo
);
```
The documentation (and possibly the internal header Windows is using for
Winlogon) is sloppy, because it doesn't tell whether the convention is
`STDCALL` or `CDECL`. When compiling routines with such a signature, the
compiler will employ whatever default convention it is set to use.

Windows code is typically compiled with `STDCALL` convention as the default
(see e.g. how the Windows Development Kit is set up), thus, such a
function signature would default to `STDCALL`. Observation (with debugger)
shows that it is what Windows' winlogon.exe is indeed expecting.

However, 3rd-party code using a different development environment, could
set the compiler to use `CDECL` as the default calling convention. As a
result, the function signature from above would use `CDECL` instead.

The difference between the `STDCALL` and `CDECL` conventions is how the
function parameters are passed on the stack and how the stack is cleaned
at the end (`STDCALL`: the function unwinds the stack; `CDECL`: the caller
does it). A calling convention mismatch would therefore corrupt the stack,
and this is exactly what happens with the `Ati2evxx.dll` from the AMD/ATI
drivers, see CORE-20279.

The ReactOS Winlogon crashes from the `_RTC_Failure()` handler just after
the 3rd-party handler returns, since we compile our code with runtime checks
enabled. Windows' winlogon.exe doesn't apparently crash, because neither
in Release nor in Checked/Debug mode did they compile winlogon.exe with
RTC enabled. However, its stack would become more corrupt with time.

In order to alleviate this in ReactOS' winlogon.exe, I decided to use
a "generic" workaround, manually calling the handler with inline ASM
(which is OK since the problem and solution is x86-specific only).
It does something similar to what the RTC support does: it checks the
stack pointer after the call and restores it if needed.
An informative message is then emitted in the debugger telling which DLL
is buggy and needs to be fixed.

[^1]: https://learn.microsoft.com/en-us/windows/win32/secauthn/event-handler-function-prototype
2026-01-29 21:04:44 +01:00
Hermès Bélusca-Maïto
9c0efba4b3 [USERINIT] Hide install option on LiveCD when no installer is available (#8614)
RELEASE-8
2026-01-22 21:48:32 +01:00
Hermès Bélusca-Maïto
d46372ef1a [USERINIT] Cleanup some traces and some code 2026-01-22 21:48:16 +01:00
Doug Lyons
7de9099e5d [REGEDIT] Fix import of ASCII file writing Unicode data (#8587)
Test text of ASCII file using "hex()" data for presence of Unicode and handle accordingly.

CORE-15185
2026-01-21 20:43:42 -06:00
Thomas Anderson
afc4f33b20 [IEXPLORE] Make the Internet Browser desktop icon use DuckDuckGo instead of Google (#8582)
Google recently made modern browser a requirement for their search to work,
which the Gecko engine for ReactOS doesn't fulfill.

Since ReactOS is already using DuckDuckGo as the default search engine,
set it as a default start page.

- Before: https://github.com/user-attachments/assets/c544726f-2d83-4a9a-9d53-e9c17fc04fe9
- After: https://github.com/user-attachments/assets/5de5b007-3d1f-458d-a642-6b9e657b4c62
2026-01-19 12:40:52 +03:00
Eric Kohl
e7de59ba45 [DISKPART] Add missing trailing CRLF 2026-01-18 09:12:12 +01:00
Eric Kohl
6da5483392 [DISKPART] Make size units translatable 2026-01-18 01:23:20 +01:00
Vitaly Orekhov
7c801c2c15 [SNDVOL32] Update master volume and mute on external events (#8580)
Tray popup window that shows master volume and mute was not updated in real
time if something outside it adjusted master volume or line mute. Now it does.

- Handle `MM_MIXM_CONTROL_CHANGE` window message in `sndvol32.exe!TrayDlgProc`

CORE-12632
2026-01-17 21:14:44 +03:00
Katayama Hirofumi MZ
3ba9d33b03 [MMC] Add Japanese (ja-JP) translation
CORE-18706
2026-01-17 19:37:45 +09:00
Katayama Hirofumi MZ
bda1fcb8ab [GAMES][WINMINE] Improve Japanese (ja-JP) translation
CORE-18706
2026-01-17 19:32:59 +09:00
Katayama Hirofumi MZ
b2836706cf [GAMES][SOL] Improve Japanese (ja-JP) translation
CORE-18706
2026-01-17 19:26:59 +09:00
Katayama Hirofumi MZ
d064e31634 [FLTMC] Add Japanese (ja-JP) translation
CORE-18706
2026-01-17 19:23:41 +09:00
Katayama Hirofumi MZ
5779ef5d5c [TASKMGR] Update Japanese (ja-JP) translation
CORE-18706
2026-01-17 19:13:17 +09:00
Chan Chilung
323a406fcf [BASE][CPL] Update Traditional Chinese (zh-TW) translation (#8581)
- [MSCONFIG] Update Traditional Chinese (zh-TW) translation
- [MSCONFIG_NEW] Update Traditional Chinese (zh-TW) translation
- [MSPAINT] Update Traditional Chinese (zh-TW) translation
- [NOTEPAD] Update Traditional Chinese (zh-TW) translation
- [RAPPS] Update Traditional Chinese (zh-TW) translation
- [SETUP:REACTOS] Update Traditional Chinese (zh-TW) translation
- [CPL:ACCESS] Update Traditional Chinese (zh-TW) translation
- [CPL:APPWIZ] Update Traditional Chinese (zh-TW) translation

Take into account documentation updates in b380d23d6f.
2026-01-15 18:28:54 +03:00
Katayama Hirofumi MZ
3319a16288 [REGEDIT] Fix column string sort (#8590)
JIRA issue: CORE-20434
Fix 3rd bug of CORE-20434.
- Sort the columns as strings when
  REG_SZ, REG_EXPAND_SZ, and
  REG_MULTI_SZ.
2026-01-14 20:59:31 +09:00
Eric Kohl
df01aa6241 [DISKPART] Replace the hardcoded volume type strings 2026-01-13 23:30:42 +01:00
Eric Kohl
b5097211c8 [DISKPART] Replace hardcoded strings and fix typos 2026-01-13 21:16:37 +01:00
Eric Kohl
702f9c6f77 [DISKPART] Prevent drive letter changes on boot or system volumes 2026-01-12 19:35:38 +01:00
Eric Kohl
a40bd103fc [DISKPART] Prevent deletion of boot and system partitions 2026-01-12 15:30:19 +01:00
Tibor Lajos Füzi
01cbfff0ea [USETUP] Update Hungarian (hu-HU) translation (#8544) 2026-01-12 16:50:18 +03:00
Erdem Ersoy
5934aa1588 [NOTEPAD] Update Turkish (tr-TR) translation (#8538) 2026-01-12 16:48:48 +03:00
Doug Lyons
2f5a67fa2a [REG] Fix importing ASCII *.reg file creating a Unicode registry entry (#6450)
* When source REG file is ASCII encoded, detect presence of UNICODE value and force
   'parser->is_unicode' to TRUE when dealing with Unicode imports.
2026-01-11 13:08:46 -06:00
Eric Kohl
ced7700392 [DISKPART] Fix volume info retrieval
- Pass boot volume info to the (boot) disk.
- Replace some hard coded strings.
2026-01-11 17:36:55 +01:00
Katayama Hirofumi MZ
3885311c85 [KBSWITCH] Fix ID_IMEONOFF action (#8562)
Toggling IME open/close from pen icon menu didn't work
because the kbswitch app thread is different from the IME thread.
JIRA issue: CORE-19268
- Use WM_IME_CONTROL:IMC_GETOPENSTATUS instead of
  imm32!ImmGetOpenStatus.
- Use WM_IME_CONTROL:IMC_GETCONVERSIONMODE instead
  of imm32!ImmGetConversionStatus.
- Use WM_IME_SYSTEM:IMS_SETOPENSTATUS instead of
  imm32!ImmSetOpenStatus.
- Adjustment for timing of SetForegroundWindow call.
2026-01-11 07:40:46 +09:00
Eric Kohl
41d6aeb72a [DISKPART] Identify system and boot volumes 2026-01-10 17:54:55 +01:00
Hervé Poussineau
994d0b5a7c [DXDIAG] Use another way to get display GUIDs
This is compatible with NATIVE_REACTX build.

CORE-20303
2026-01-08 22:45:57 +01:00
Hervé Poussineau
c8b16ca5a0 Revert "[DXDIAG] Rework display enumeration, to use DirectDrawEnumerateEx"
This reverts commit aa0089a3ec.
2026-01-08 22:45:57 +01:00
Whindmar Saksit
c356035860 [RAPPS] Hide packages not compatible with the current NT version (#8398)
- Add NTVersion to filter app packages and hide incompatible packages. The format is: "Max-", "Min-Max", "Min" or "Min+".

---------

Co-authored-by: Carl J. Bialorucki <carl.bialorucki@reactos.org>
2026-01-08 14:14:42 -06:00
Eric Kohl
b84fa499e7 [DISKPART] Implement the format command
- A lot of volume manager and mount manager related stuff is still missing.
- The label is not set yet.
2026-01-05 23:15:05 +01:00
Eric Kohl
4cf877796b [DISKPART] Improve 'list volume' command
Add output formats for the status and info columns.
2026-01-04 21:34:59 +01:00
Eric Kohl
9f69e8cfab [DISKPART] Initialize unrecognized volumes as partitions 2026-01-01 22:59:35 +01:00
Copilot
1d409e322b [EXPLORER] Fix handle leaks (#8516)
JIRA issue: CORE-15616
JIRA issue: CORE-14382

The Explorer shell has multiple resource leaks causing handle exhaustion over extended use.
2026-01-01 22:13:00 +09:00
Eric Kohl
d2ae286c6b [DISKPART] Command function return EXIT_CODE instead of BOOL
This simplifies the implementation of the NOERR option.
2026-01-01 13:46:34 +01:00
Eric Kohl
e2c3a6e624 [DISKPART] Move mount manager functions into a separate file
- Move the existing function from automount.c
- Implement required function for the assign and remove commands.

Deleting a drive letter works, until the next reboot.
Assigning a new drive letter fails.
2025-12-31 15:24:27 +01:00
Doug Lyons
0d7afe780e [SETUP][INF][FONTS] Revert FontSubstitutes for "MS Shell Dlg" back to "Tahoma" (#8533)
Partial revert of bac7d7f for TCPView Help | About https://jira.reactos.org/browse/CORE-15678 truncated text.
Fixes JIRA issue: CORE-20404.
2025-12-30 21:37:19 -06:00
Eric Kohl
f6a86c1ab3 [DISKPART] Implement the assign command
- Also improve the parameter checks of the remove command.

The assign command does not work, because the SetVolumeMountPointW function is not implemented yet.
2025-12-28 20:35:27 +01:00
Eric Kohl
31b091cbd6 [DISKPART] Improve the drive letter query
And disable some debug output
2025-12-27 21:47:38 +01:00
Eric Kohl
7675b0e62a [DISKPART] Implement the remove command
The remove command does not work, because the DeleteVolumeMountPointW function is not implemented yet.
2025-12-27 19:11:06 +01:00
Copilot
d6f68397cf [WINLOGON] Fix memory and handle leaks (#8514)
JIRA issue: CORE-13213
2025-12-27 22:10:44 +09:00
Eric Kohl
abc2acf5a7 [DISKPART] Implement the filesystems command
Limitations with respect to available file systems and cluster sizes are not implemented yet.
2025-12-26 13:32:03 +01:00
Eric Kohl
cb8278b5f3 [DISKPART] Add help text for the gpt command 2025-12-21 12:26:35 +01:00
Eric Kohl
c4c8e5ef3f [DISKPART] Check for the noerr option first 2025-12-21 11:47:05 +01:00
Eric Kohl
86ec64b2b1 [DISKPART] Implement the automount command 2025-12-21 09:33:59 +01:00
Doug Lyons
bac7d7f5cd [SETUP][INF][FONTS] Change font substitutes for "MS Sans Serif" and "MS Shell Dlg" (#8481)
Change both of these from "Tahoma" to "Microsoft Sans Serif" for Latin Fonts only.
It is possible that other language types would benefit, but I am unable to test these.

CORE-15675 and CORE-15678 (Both Fixed.)
CORE-16435 (Improvements only. Not totally fixed.)
2025-12-20 22:31:36 -06:00
Copilot
be39662767 [TASKMGR] Fix a handle leak of ReleaseDC (#8513)
JIRA issue: CORE-20230

Fix a handle leak that forgot ReleaseDC(hParentWnd, hdc); on failure.
2025-12-21 08:12:57 +09:00
Eric Kohl
8e952f1510 [DISKPART] Show more disk details
- Show device description, status and bus type in the 'detail disk' command.
2025-12-20 16:26:15 +01:00
Eric Kohl
3f96772154 [DISKPART] Use the PSDK diskguid.h instead of our own guid.h 2025-12-19 22:39:34 +01:00
Eric Kohl
5047e62e3d [DISKPART] Implement the gpt command keep the partition number up to date 2025-12-16 23:55:20 +01:00
Eric Kohl
ccfb061a2b [DISKPART] list partition: Show a message when there are no partitions on a disk 2025-12-15 20:36:51 +01:00
Eric Kohl
182715ed50 [DISKPART] Prevent EFI- and MSR-Partitions from accidental deletion 2025-12-15 20:11:59 +01:00