Commit Graph

88500 Commits

Author SHA1 Message Date
Alex Mendoza
d5697b231c [IMM32] Ensure minimum size in Imm32CreateInputContext (#8791)
Ensure minimum size of hPrivate
in Imm32CreateInputContext, just
like Imm32SelectInputContext does
2026-03-28 19:41:40 +09:00
Eric Kohl
065c3a8b58 [NETCFGX] Improve the tcpip notification object
- Make the INetCfgComponentControl interface the 'base' interface because it is the only required interface for notification objects and it manages the configuration data.

- Add the INetCfgComponentSetup interface. It will be used for installing and uninstalling network components.

- Clean-up configuration data to prevent memory leaks.
2026-03-28 11:24:45 +01:00
Katayama Hirofumi MZ
b7510137d9 [IMM32] Fix Imm32AssignNewLayout (#8764)
Fix behavior of IME installation.
JIRA issue: CORE-19268
Rewrite Imm32AssignNewLayout function.
2026-03-28 09:11:13 +09:00
Ahmed Arif
b34a1f15df [FREELDR:UEFI] Fix amd64 assembly calling convention and GDT reload (#8698)
- Fix #GP crash on UEFI x64 boot caused by `call ExecuteLoaderCleanly[rip]` and `mov rax, UefiExitBootServices[rip]; call rax` generating indirect calls that read function code bytes as a pointer.

- Reload CS and data segments after `lgdt` to avoid #GP from stale UEFI selectors (e.g. CS=0x38) exceeding the new GDT limit.
2026-03-26 19:36:14 +01:00
Alex Mendoza
f76ed0625b [IMM32] ImmEnumInputContext: Add IS_IMM_MODE check (#8768) 2026-03-25 16:51:13 +09:00
Erdem Ersoy
9dde8d4bcd [TIMEDATE] Fix DST setting checkbox (#8628)
- [TIMEDATE.CPL] Fix DST setting checkbox
2026-03-24 21:04:29 -05:00
Katayama Hirofumi MZ
ed0b44f3b9 [IMM32] ImmGetDescriptionW: Check IS_IME_HKL (#8762)
Tougher system.
JIRA issue: CORE-19268
2026-03-25 09:36:59 +09:00
Katayama Hirofumi MZ
4ca47af13f Revert "[IMM32] ImmInstallIMEW: Use uppercase filename" (#8767)
Reverts #8763.
We should consider case-sensitive
file-systems we have.
2026-03-24 09:45:11 +09:00
Carl J. Bialorucki
20d322fcdc [USER32_APITEST_MENUUI] Don't let rosautotest wait on a test list from user32_apitest_menuui.exe (#8469)
- [USER32_APITEST_MENUUI] Return an empty test list when called with --list
NOTE: The better way to fix this is to move this executable to \reactos\bin\suppl. But that requires some refactoring of tests already in our source tree.
2026-03-23 18:32:52 -05:00
Katayama Hirofumi MZ
8b3663d2b6 [IMM32] ImmGetGuideLineAW: Fix return value for error (#8766)
The function has to return zero on error.
JIRA issue: CORE-19268
Return zero on error (in GGL_STRING and GGL_PRIVATE).
2026-03-24 06:50:16 +09:00
Hermès Bélusca-Maïto
12ee8fda7b [SETUPLIB] Use a "well-known" length for disk volume labels (#7259)
Use the same `MAXIMUM_VOLUME_LABEL_LENGTH` as the one defined in the
WDK for specifying the length of buffers storing a volume label.
2026-03-23 21:46:43 +01:00
Hermès Bélusca-Maïto
ca7b77d7f0 [SETUPLIB] Improve volume device naming by querying it from the MountMgr (#7259)
CORE-13525
2026-03-23 21:46:42 +01:00
Hermès Bélusca-Maïto
bf3c54825c [SETUPLIB] Don't immediately unmount volumes when deleting partitions... (#7259)
...but wait until the partitions are actually updated on disk.

CORE-13525

DeletePartition() deletes partitions only in the virtual partitions list
in memory; the partitions still exist on the disk and are written only
later when committing all partition changes.

Thus, we do the same for file system volumes that lay on top of these
partitions being deleted: we move the linked VOLENTRY structures to a
list of "pending volumes to unmount", while they still actually stay
mounted on the system. Only when partition changes are about to be
committed to disk, the "pending volumes to unmount" list is processed
and the volumes actually unmounted, prior to modifying the partitions.
2026-03-23 21:41:56 +01:00
Katayama Hirofumi MZ
0c7d3f20fa [IMM32] Fix Imm32ReconvertWideFromAnsi (#8758)
Fix recoversion feature.
JIRA issue: CORE-19268
- Replace pSrc with pDest in
  Imm32ReconvertWideFromAnsi.
2026-03-23 23:34:00 +09:00
Katayama Hirofumi MZ
35d30ec5fe [IMM32] ImmSetConversionStatus: Check IS_CICERO_COMPAT_DISABLED (#8760)
Improve IME compatibility.
JIRA issue: CORE-19268
- Check IS_CICERO_COMPAT_DISABLED's
  value.
- Initialize dwOldConversion and
  dwOldSentence variables.
2026-03-23 23:28:58 +09:00
Katayama Hirofumi MZ
e2ef2c9923 [IMM32] ImmEnumInputContext: Validate hIMC (#8761)
Tougher system.
JIRA issue: CORE-19268
Check hIMC and gpsi in
ImmEnumInputContext function.
2026-03-23 22:43:33 +09:00
Katayama Hirofumi MZ
cad71d733f [IMM32] Fix Imm32IsSystemJapaneseOrKorean (#8757)
The if-condition for Japanese or
Korean was wrong.
JIRA issue: CORE-19268
Replace logical operator || with
operator &&.
2026-03-23 22:33:51 +09:00
Katayama Hirofumi MZ
3b619baeb5 [IMM32] ImmGenerateMessage: Always use SendMessageW (#8765)
SendMessageA for IME message
won't work in some situations.
JIRA issue: CORE-19268
Always use SendMessageW instead of
SendMessageA in ImmGenerateMessage.
2026-03-23 22:23:47 +09:00
Katayama Hirofumi MZ
d47c613c26 [IMM32] ImmInstallIMEW: Use uppercase filename (#8763)
Avoid data inconsistencies in
interoperability.
JIRA issue: CORE-19268
Call CharUpperW in ImmInstallIMEW
function.
2026-03-23 22:16:51 +09:00
Hermès Bélusca-Maïto
5923d37e1f [KDCOM][KDGDB] Fix kdcom.dll/kdgdb.dll file naming on MSVC-built ISOs
CORE-20528

Addendum to commit 912c8ad987 (PR #5187)

Fix a bug where "KDCOM/KDGDB_NAME_ON_CD" CMake variables weren't used
as variables, but directly as names.
2026-03-23 13:29:58 +01:00
Katayama Hirofumi MZ
0566a0f699 [NTGDI][GDI32][FREETYPE] Rewrite GetGlyphIndicesA/W (#8747)
JIRA issue: CORE-20505
- NtGdiGetGlyphIndicesW function simply calls
  NtGdiGetGlyphIndicesWInternal function.
- NtGdiGetGlyphIndicesWInternal allocates buffer
  and calls GreGetGlyphIndicesW function.
- Add GreGetGlyphIndicesW definition in freetype.c.
- Modify GetGlyphIndicesA function.
2026-03-23 12:05:19 +09:00
Doug Lyons
16a65a0df2 [NTUSER][COMCTL32] Fix ListBox background color setting (#8665)
CORE-20433

The brush returned from WM_CTLCOLORLISTBOX message is ignored when painting the background. This bug can be found at https://bugs.winehq.org/show_bug.cgi?id=2948

Fixed by handling backgound painting in LISTBOX_PaintItem and LISTBOX_Paint functions.

Patch by @I_Kill_Bugs
2026-03-22 22:38:36 +01:00
Hermès Bélusca-Maïto
62deebac2d [FREELDR:NTLDR] Try to auto-detect which bootvid module to load at boot time (#8720)
Detect whether we run on XBOX or PC98 (on x86 builds), or on (U)EFI or on
a BIOS-based PC, or whether a generic linear framebuffer mode is used, in
order to choose the correct bootvid module to load, based from a predefined
file names list (ideally it should be derived from txtsetup.sif...).

Supersedes PR #8701.

Use `KeFindConfiguration*Entry()` to spelunk the hardware configuration
tree in the NT loader module.

Alternatively, allow the user to override the choice with a new `BOOTVID=`
boot option. In any case, if the selected bootvid module failed to be loaded,
silently fall back to the default bootvid.dll file. The fallback is done
by just letting the PE loader resolve the necessary exports from hal.dll
and ntoskrnl.exe.
2026-03-22 20:16:15 +01:00
Hermès Bélusca-Maïto
e05e6c4849 [NTOS:KE][NDK] Minor enhancements to the KeFindConfiguration*Entry() routines (#8720)
- Update the SAL annotations;
- Simplify some while-loops into for-loops.
2026-03-22 20:15:50 +01:00
Hermès Bélusca-Maïto
3ac86990e3 [SDK:DELAYIMP] Simplify code following commit 5840b212a8 (#7784)
CORE-10935

Addendum to commit 5840b212a8, as well as to
commits 91d86a9a91 (r71190) and e5904542d6 (PR #377).
2026-03-22 17:56:48 +01:00
Hermès Bélusca-Maïto
dc8f9b8671 [SDK_APITEST] Revert "Fix initializing global variables" commit; improve the delayimp_apitest (#8462)
CORE-10935

- This reverts commit 522e9f6dd3.

- Implement Mark's suggestion given in PR #7784,
  https://github.com/reactos/reactos/pull/7784#pullrequestreview-2722604928

  Build three binary versions of the delayimp_apitest, named:
  delayimp_nohook_apitest, delayimp_globalhook_apitest, and delayimp_runtimehook_apitest,
  that respectively are:

  - "nohook": delayload is used, but neither of the hook/failurehook is defined;
  - "globalhook": delayload is used, and the hooks are assigned at global scope;
  - "runtimehook": delayload is used, and the hooks are assigned at runtime.

- Since the delayimp apitests are self-contained, don't use the separate
  testlist.c file. It is temporarily unused, until other SDK-specific tests
  are added in this directory.

## Testing observations:

GCC build (tested with KVM x86): binutils doesn't create specification-compliant
`IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT` table for delay-loaded imports, and as a
result, the tests show:
```
delayimp.cpp:472: Tests skipped: No IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT found,
  some advanced features might not work!
```
Additionally, both `SymGetOptions` and `MapAndLoad` tests are skipped "until
CORE-6504 is fixed", as claimed. _**This doesn't happen for MSVC builds.**_
2026-03-22 17:14:40 +01:00
Hermès Bélusca-Maïto
67e331a88d [DBGHELP_APITEST] Revert "Fix initializing global variables" commit (#8462)
This reverts commit 522e9f6dd3.
2026-03-22 16:57:46 +01:00
Hermès Bélusca-Maïto
2593cea230 [NTOS:IO] Remove last remnants of IoCreateDriverList() and IoDestroyDriverList()
These two functions were removed as part of the boot/system drivers
loading support rewrite in commit 959116f521 (r46693).
2026-03-22 15:39:54 +01:00
Eric Kohl
c364fe7fb1 [SDK][UUID] Add notification object interfaces
Add INetCfgComponentNotifyBinding, INetCfgComponentNotifyGlobal and INetCfgComponentSetup.
2026-03-22 15:04:48 +01:00
Katayama Hirofumi MZ
f488f34940 [ZIPFLDR] Rename _ILCreate as _ILCreateZipItem (#8752)
Tiny refactoring. The name of _ILCreate
function is too ambiguous.
JIRA issue: CORE-20466
2026-03-22 19:57:21 +09:00
Hermès Bélusca-Maïto
6e51f4abb0 [KDVM] Rename KdVmKdVmExchangeData to KdVmExchangeData 2026-03-21 23:17:39 +01:00
Hermès Bélusca-Maïto
20e16781bb [KDCOM][KDGDB][KDVM] Adjust the file names reported in their version resources 2026-03-21 23:16:12 +01:00
Hermès Bélusca-Maïto
9669b3124f [KDGDB] Fix build with x86 and x64 MSVC (#5187)
```
gdb_input.c(243): error C4477: '_snprintf' : format string '%p' requires
  an argument of type 'void *', but variadic argument 1 has type 'UINT_PTR'

i386_sup.c(98): error C4090: 'return': different 'const' qualifiers
amd64_sup.c(115): error C4090: 'return': different 'const' qualifiers
```
2026-03-21 22:52:16 +01:00
Hermès Bélusca-Maïto
6e3e7f0d23 [KDGDB] Recognize both 'DEBUGPORT=GDB' and 'DEBUGPORT=COM' syntaxes (#5187) 2026-03-21 22:52:09 +01:00
Hermès Bélusca-Maïto
912c8ad987 [KDGDB] Don't make GDB a separate citizen (#5187)
But add KDGDB compilation only for x86 and x64, since for other
architectures (e.g. ARM) it currently emits the following error:
```
drivers/base/kdgdb/kdgdb.h(149): fatal error C1189: #error:
    "Please define relevant macros for your architecture"
```

For the time being, keep the "GDB" build configuration macro, used for
Gitpod testing... but this needs to be replaced with a more robust solution.
Because of this, rename kdgdb.dll to kdcom.dll, and kdcom.dll to kdser.dll
so that GDB is used by default, and we don't get a file name clash too.

Revert also commit 57cf5cdc5d.
2026-03-21 22:46:58 +01:00
Hermès Bélusca-Maïto
d012a8c4a3 [KDGDB] Minor formatting/typo fixes 2026-03-21 18:16:07 +01:00
Hermès Bélusca-Maïto
6c532e771e [FREELDR][KDCOM][KDGDB] Allow specifying the serial port address in the DEBUGPORT option
This is the same feature as the one that already exists in the
NTOS:KD!kdmain.c module used by the in-kernel KDBG debugger
(GCC builds), first introduced in commit 4ce30245de (r54473),
and documented at:
https://reactos.org/wiki/Debugging#Changing_the_serial_port_address

This feature is useful if one uses a PCI, PCIe, PCMCIA, or ExpressCard
serial card on real hardware (these cards are used e.g. with laptops
without a built-in serial port), or with AMT serial over LAN.
After determining the serial port I/O address (say, 0xCC00), specify
the debug port as follows:

/DEBUGPORT=COM:0xCC00

instead of the usual syntax: /DEBUGPORT=COMn (n an integer).

The same syntax can be used for debugging FreeLoader as well: in the
FREELDR.INI file, add a "Debug" line in the "FREELOADER" section,
as follows:

```
[FREELOADER]
Debug=/DEBUG /DEBUGPORT=COM:0xCC00 /BAUDRATE=115200
```

----

NOTE for KDCOM/KDGDB:

Since `strtoul()` is used, but isn't exported by ntoskrnl, link against
the "strtol" static library that has been introduced in commit d317d4fbcc
(r71481).
2026-03-21 00:10:21 +01:00
Hermès Bélusca-Maïto
f77fcc15ff [FREELDR:INI] Remove trailing whitespace from parsed INI key name
Leading whitespace was already skipped in the code.
2026-03-21 00:06:30 +01:00
Hermès Bélusca-Maïto
8e8cd2e1f6 [FREELDR:INI] inifile.h/parse.c: Formatting; use PCSTR where applicable 2026-03-21 00:06:28 +01:00
Hermès Bélusca-Maïto
acb91336e3 [NTOS:KD] Const-ify the KdpGetDebugMode() function parameter 2026-03-21 00:06:28 +01:00
Hermès Bélusca-Maïto
956d9f7973 [FREELDR][KDCOM][KDGDB][KDVM][NTOS:KD] Don't overrun the command-line when parsing "DEBUGPORT"
Don't loop past the end of the command-line buffer, if the command-line
terminates with a lone "DEBUGPORT" without any extra parameter following.
For example: "some things   DEBUGPORT  "
2026-03-21 00:06:20 +01:00
Timo Kreuzer
7cc4459d3c [SDK] wine/test.h: reduce diff to wine-10.0 (#8710)
* test.h: remove obsolete wine specific definitions - __winetest_cdecl, __winetest_va_* aren't used anymore
* Add missing winetest_ prefixes
* Rename winetest_get_thread_data
* Update global variables
* Move winetest_thread_data
* Make winetest_get_thread_data extern
* [ISAPNP_UNITTEST] Use static inline instead of FORCEINLINE (GCC complains when a non-static inine function calls a static inline function)
* Move winetest_win_skip and make it static
* Move winetest_start_todo and make it static inline
* Move winetest_start_todo and make it static inline
* Move winetest_get_failures and winetest_add_failures and make them static
* Add winetest_print_lock and winetest_print_unlock
* Add winetest_get_time and winetest_elapsed
* Add flaky support
* Add exc_filter and running_under_wine
* Move reactos specific things together
2026-03-20 20:02:12 +00:00
Ahmed Arif
1c2b5a1a8e [SEH][GCC] Prevent inlining of functions using REACTOS seh pragma 2026-03-20 14:57:40 +02:00
Ahmed ARIF
094d06eb26 [ASMPP] Fix .text exporting for MASM .code blocks 2026-03-20 13:50:03 +02:00
Hermès Bélusca-Maïto
b7c3432070 [NTOS:KD] Restore BAUDRATE option support
Support for the BAUDRATE option was erroneously removed in commit 95faf65ebf.
As a result, the in-kernel KDBG debugger was always running with the
default debug port baud rate (115200 Bd), even if the user tried to
override it with the BAUDRATE option for supporting terminals that use
a different baud rate.
2026-03-19 23:22:54 +01:00
Hermès Bélusca-Maïto
c4d60756dd [FREELDR][KDCOM][KDGDB][NTOS:KD] Some code "nits"
- Don't hardcode constant string lengths.

- Use `_strnicmp()` -- Ideally we shouldn't have to unconditionally upcase
  the global kernel command-line string to perform substrings comparisons.

- Cast `atol()` returned value to `ULONG`.
2026-03-19 22:49:29 +01:00
Hermès Bélusca-Maïto
4d0642b67f [FREELDR][KDCOM][KDGDB][NTOS:KD] Minor code comments enhancements 2026-03-19 22:14:00 +01:00
Hermès Bélusca-Maïto
bcd4c718c1 [HALX86] Use correct HalpComPortIrqMapping values in PC98
In addition, there is no COM port IRQ mapping on the Xbox,
so exclude this from the Xbox HAL build.
2026-03-19 21:53:12 +01:00
Hermès Bélusca-Maïto
b1a31610ac [FREELDR][KDCOM][KDGDB] Remove deprecated "IRQ" debugger command-line option
- The "IRQ" debugger option was introduced in commit 5a6adb4f13 (r2546).
  It was used by the in-kernel GDB stub, to manually wire an interrupt
  handler `GspBreakIn()` to allow the debugger to break into the system
  when a command is received on the GDB serial port.

  Side-remark:
  The hooking was done via `HalGetInterruptVector()` + `IoConnectInterrupt()`,
  but only at phase 1 initialization when the memory manager was up, which
  can be "late" enough during system boot initialization.
  Instead of using `IoConnectInterrupt()`, one could have used explicit
  `KeInitializeInterrupt()` + `KeConnectInterrupt()` calls that would
  have worked much earlier in the boot stage.

- This functionality was soon after disabled in commit c804ca06be (r2946)
  in the GDB stub (see `ntoskrnl/kd/gdbstub.c!KdGdbStubInit()`), never
  to be re-enabled again.
  It was removed completely in commit e160c0fb26 (r14799).

- Since ReactOS was (until recently) always debugged locally using the
  in-kernel KDBG debugger, break-in was done with TAB-K keypress,
  intercepted by the keyboard driver that triggered a `DbgBreakPoint()`,
  thus no break-in via serial port interrupt was necessary.

- Remote debugger break-in detection, which is the standard method that
  is used when remote-debugging using KD transport DLLs and WinDbg, was
  introduced in commit 12e7593f24 (r25984). As with the rest of debugger
  communication and as done on Windows, detection is done by polling the
  serial port at certain times, namely in the `KeUpdateSystemTime()`
  kernel procedure periodically invoked by the timer interrupt.
  This break-in detection was then erroneously removed in commit bf8b9467dc
  (r45140), and reinstated in commit 014b23b9a (r56194).

- Parsing of this "IRQ" option was copy-pasted in other modules (FreeLoader,
  KDCOM, and KDGDB), even though it was never used. The parsing was then
  removed in KDBG itself in commit 95faf65ebf, but left in the other
  modules... until now!
2026-03-19 21:52:14 +01:00
Hermès Bélusca-Maïto
fe6ee1223a [NTOS:KDBG] Fix misleading indentation
Address second part of comment
3726b992ed (r50112970)
2026-03-19 21:52:12 +01:00