Commit Graph
88260 Commits
Author SHA1 Message Date
Timo Kreuzer 4c19b94ae9 [VCRUNTIME] Implement _chkesp / _chkesp_failed 2026-02-01 11:46:59 +02:00
Timo Kreuzer 89506818c4 [VCRUNTIME] Implement purecall handler support
Implements _get_purecall_handler, _set_purecall_handler and _purecall
2026-02-01 11:46:59 +02:00
Katayama Hirofumi MZ abd201bfa2 [USER32][COMCTL32] ComboBox: Don't check owner window on creation (#8647)
Reduce imm32:himc failures.
JIRA issue: CORE-19268
- Don't check lphc->owner nor
  WS_VISIBLE on ComboBox creation.
2026-02-01 07:24:27 +09:00
Hermès Bélusca-Maïto b5b9b5d169 [HALX86] Update the PCI hardware IDs database.
Extracted from the pci.ids database at https://pci-ids.ucw.cz/ from 2026-01-31 03:15:01.
Maintained by Albert Pool, Martin Mares, and other volunteers from the PCI ID Project.
2026-01-31 18:00:03 +01:00
Hermès Bélusca-Maïto c2aaa52bf2 [BOOTVID] Implement a generic linear framebuffer boot video driver (#8618)
Its purpose is to offer an out-of-the-box generic framebuffer video
(a video miniport driver for win32k will be introduced in a future PR)
to ease ReactOS porting to other possibly non-PC-compatible systems,
where no VGA-compatible video is present and only linear framebuffers
are available; for example: XBOX, UEFI with GOP only, AppleTV, etc.

Of course, once ReactOS is ported, one can then (and should) write,
or use existing video drivers tailored to the system of interest.

Together with our FreeLoader, this driver could also be employed for
of porting/modding Windows 2000/XP/2003 attempts to other platforms,
as this has been done by external contributors.

Current limitations:
- Only supports 32 bits-per-pixel ARGB format. This limitation will be
  removed in subsequent PR(s).
- May be slow during rendering (region color filling and scrolling);
  I will try to improve this as time goes.

This driver's code is loosely based upon preliminary code by Justin Miller
and on the existing XBOX bootvid implementation.
Tested by Justin Miller (@TheDarkFire) for UEFI, and by Sylas Hollander
(@DistroHopper39B) with his AppleTV port.
It has also been tested with VESA linear modes on PC by myself.
2026-01-30 21:21:30 +01:00
Hermès Bélusca-Maïto 0dc78396f5 [SDK/INCLUDE] Introduce boot display discovery helper functions (#6661)
Their purpose is to simplify the way a compatible boot video driver
and a generic framebuffer miniport driver can retrieve this information.

In this iteration, the data is retrieved only from the kernel loader-block
ARC tree, via the `KeFind(Next)ConfigurationEntry()` routines.
As such it can be used only by the boot video driver (loaded early in the
boot process).
Other methods, suitable for retrieving this information later in the
boot process, will be added in the future.
2026-01-30 20:53:23 +01:00
Katayama Hirofumi MZ 85cdb75536 [SHELL32] SHOpenWithDialog: Write DefaultIcon registry key (#8634)
JIRA issue: CORE-19670
- Write DefaultIcon registry key
  when association changes.
- Call SHChangeNotify(
  SHCNE_ASSOCCHANGED, ...).
2026-01-31 02:23:41 +09:00
Hermès Bélusca-Maïto 00bbac600e [FREELDR:XBOX/UEFI] Enumerate video framebuffer information in the Hardware Configuration Tree (#8617)
- UEFI: Report GOP framebuffer information.
- UEFI: Update ARC versioning for configuration data.
- XBOX: Enumerate video display controller under the correct PCI bus.
- XBOX: Update ARC versioning for display controller configuration data.
2026-01-30 14:00:25 +01:00
Hermès Bélusca-Maïto f21d692342 [SDK/INCLUDE] Define a structure describing boot-time framebuffer information (#6658)
This information is set up by the bootloader hardware detector and stored
into the system configuration tree for consumption by the NT OS loader and
other OS subsystems. This method doesn't require modifying the NT kernel
loader parameter block or extension(s), thus also allowing for a backward-
compatible usage when loading Windows OSes like 2000, XP/2003, or Vista/7.

The framebuffer information can then be retrieved by a supported bootvid
and a generic framebuffer win32k video driver.
2026-01-30 13:50:01 +01:00
Hermès Bélusca-Maïto 231de344d0 [FREELDR:ARCH] Improve configuration resource list size calculations (#8629)
Prefer using the syntax:
`FIELD_OFFSET(CM_PARTIAL_RESOURCE_LIST, PartialDescriptors[k]) + ...;`
which is in general clearer and explicitly specifies the actual
number of resource descriptors used, over the other one:
`sizeof(CM_PARTIAL_RESOURCE_LIST) + (k-1) * sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR) + ...;`

Based on a suggestion by Dmitry Borisov.
2026-01-30 13:48:08 +01:00
Justin Miller bc690cfe43 [VIDEOPRT] Allow later nvidia cards to load (#8646)
Clear out the miniport owned extension and assign the slot iD properly
2026-01-30 11:23:00 +00:00
Doug Lyons 076699bff6 [USER32] Fix GSView 5.0 "Espanol" background color (Retry of PR #4015) (#8588)
CORE-13935

Improve "is_dib_monochrome" function in win32ss/user/user32/windows/cursoricon.c
so that it returns TRUE on a monochrome color table with WHITE first and BLACK second.
2026-01-30 01:50:39 -06:00
Doug Lyons 3637fd8b1d [USER32_APITEST] New LoadImage 1bpp test for PR #4015 retry (#8522)
CORE-13935

* Make LoadImage1bpp.c a sub-test of LoadImage.c for apitest.

* Add broken() for Vista x64 Testbot regression test fix based on reviewer comments.
2026-01-29 22:06:57 -06:00
a30ed15ceb [WIN32SS:NTGDI] Handle AMD GPUs being dumb when they do a double restore (#8644)
According to the kerestorefloatingpointstate msdn article shouldn't be on the kernel's responsibility to handle. for the life of me i couldn't figure out why this specific driver does this until finally I tried this on Windows and low and behold on checked builds of windows it actually tells you it does the exact same thing. Investigating deeper I realized win32k just has some extra handling for this dumb case.

Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
Co-authored-by: Timo Kreuzer <[email protected]>
2026-01-29 23:17:33 +00:00
Justin Miller 0203d1778a [WINED3D] FFS has to return correct values on both msvc and gcc (#8625)
accordingly to
https://www.man7.org/linux/man-pages/man3/ffs.3.html
we have been doing this wrong for awhile and it causes opengl to freeze
2026-01-29 22:30:34 +00:00
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
Timo Kreuzer 62cc9c498e [CMAKE] Don't re-archive import libraries
Instead create an IMPORTED library from the output of dlltool.
This prevents binutils 2.40+ nested archive crash (bug #31614):
2026-01-29 17:13:40 +02:00
Timo Kreuzer 07de64139a [GCC_SSP] Turn the GCC stack protector lib into a normal library
Stop pointless target_sources(xxx PRIVATE $<TARGET_OBJECTS:gcc_ssp_nt>). The only effect it has is to force the object file into the target, which was already done by specifying the libraries as OBJECT libraries, which is also pointless, and only leads to problems.
2026-01-29 17:13:40 +02:00
Timo Kreuzer f8278bd1ed [CRTDLL] Mark _onexit as extern
This is the same workaround already applied to msvcrt to prevent conflicts with msvcrtex.
2026-01-29 17:13:40 +02:00
Justin MillerandHermès BÉLUSCA - MAÏTO c990b725b4 [WIN32SS] Remove NATIVE_REACTX check - reenable Oleg's code (#8554)
* [REACTX] Simple Non-AGP ddraw allocator
* [WIN32SS] remove NATIVE_REACTX check - reenable oleg's code
JIRA issue: CORE-19142

Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-01-29 06:28:43 +00:00
a08d639b22 [WIN32SS:NTGDI][VIDEOPRT] Multimonitor on RealHW fixes (#8638)
This commit attempts to resolve two regressions and improve realhw behavior
A PNP_DETECTED_FATAL_ERROR bug check caused by the monitor device instance being duplicated.
https://jira.reactos.org/browse/CORE-20410
this is mostly due to ChildID being overwritten with the same bus/slot when 2 monitors are attached to one GPU
And video drivers failing to startup after calling VideoPortCreateSecondaryDisplay

Co-authored-by: Dmitry Borisov <[email protected]>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-01-29 04:29:55 +00:00
Katayama Hirofumi MZ 13c4ef9c40 [BOOTDATA][SHELL32][SHIMGVW] Populate HKCR\SystemFileAssociations (#8626)
JIRA issue: CORE-19355
- Modify boot/bootdata/hivecls.inf.
- Add dll/win32/shell32/res/rgs/
  systemfileassociations.rgs.
- Add dll/win32/shimgvw/res/
  systemfileassociations.rgs.
2026-01-29 07:13:30 +09:00
Timo Kreuzer c57a471e1b [NTDLL_WINTEST] Improve NtMapViewOfSection test
- Fix ZeroBits test and remove some useless and confusing "tests"
- Add another ZeroBits test (use as a bitmask)
- Fix some status tests for Windows 10
2026-01-28 12:59:20 +02:00
Timo Kreuzer 00f8b239f8 [NTDLL_APITEST] Fix QuerySetProcessValidator for x64 and NT6+
- Skip items not present in PsProcessInfoClass array
- Fix some x86 specific classes
- Handle some more special cases
- Use stricter status check
2026-01-28 12:59:20 +02:00
Timo Kreuzer 6051564fcd [NTOS:PS] Fix some alignment values in PsProcessInfoClass[] 2026-01-28 12:59:20 +02:00
Timo Kreuzer 28cf8cbce0 [NTDLL_APITEST] Improve/fix NtReadFile/NtWriteFile test
- Handle Vista+ and 64 bit
- Add 4 more tests
2026-01-28 12:59:20 +02:00
Timo Kreuzer f736154b27 [NTDLL_APITEST] Fix some tests
- Fix DllLoadNotification test on Vista (which seems to be broken)
- Fix NtAcceptConnectPort test on 64 bit
- Fix NtAllocateVirtualMemory test on Vista+
- Fix NtMapViewOfSection test on 64 bit
- Fix NtSetDefaultLocale test on Vista+
- Fix RtlBitmapApi test on Vista
- Fix RtlCaptureContext test
2026-01-28 12:59:20 +02:00
Katayama Hirofumi MZ 9e64b600f9 [BROWSEUI] Accept relative path on Address Bar (#8633)
Improve usability of Address Bar.
JIRA issue: CORE-19704
- Modify CAddressEditBox::ParseNow
  to accept relative path.
- Add SBSP_SAMEBROWSER |
  SBSP_ABSOLUTE flags for
  IShellBrowser::BrowseObject.
2026-01-28 18:00:04 +09:00
Katayama Hirofumi MZ 6350669667 [ZIPFLDR] Add dropped files (#8632)
JIRA issue: CORE-19020
- Add IDropTarget interface to
  CZipFolder.
- Modify CZipFolder::CreateViewObject
  and CZipFolder::GetUIObjectOf.
- Add CZipFolder.cpp and make
  CZipFolder some methods out-of-line.
- Extend CZipCreator for append.
- Implement IPersistFile of CZipFolder.
- Add DropHandler to CZipFolder.
2026-01-27 19:25:04 +09:00
Justin Miller eb154533af [USBPORT][USBHUB] Improve Unplug and Plugin stability (#8624)
Dramatically improves stability when unplugging a bunch of devices at once (Except storage obviously)
and implements primitive ESD handling.
2026-01-26 19:55:44 +00:00
Katayama Hirofumi MZ c56950dc19 [WALLPAPERS] Add Nebula wallpaper (#8637)
Nebula will be the default wallpaper for 0.4.16 release.
JIRA issue: RELEASE-7
2026-01-26 09:31:16 +09:00
Václav ZouzalíkandStanislav Motylkov d6395bcf61 [CYLFRAC] Add Czech (cs-CZ) translation (#8424)
* [CYLFRAC] Add Czech (cs-CZ) translation

* Update modules/rosapps/applications/screensavers/cylfrac/lang/cs-CZ.rc

Co-authored-by: Stanislav Motylkov <[email protected]>

---------

Co-authored-by: Stanislav Motylkov <[email protected]>
2026-01-25 20:13:25 +01:00
Katayama Hirofumi MZ 370eb8c04d [ZIPFLDR] Support EF_UNIPATH UTF-8 path (#8631)
Unzip library has EF_UNIPATH field for UTF-8 path. Correctly
supporting EF_UNIPATH will fix the encoding problem.
JIRA issue: CORE-20443
JIRA issue: CORE-20444
- Check existence of EF_UNIPATH extra info for each path.
  If it exists, then use it.
- Use StrCmpIW for sorting.
- Make CZipEnumerator functions out-of-line.
2026-01-25 09:35:16 +09:00
Katayama Hirofumi MZ 8605d54a62 [KEYBOARD] Remove psdk dependency and add xdk (#8630)
Reduce building again time. keyboard
has no dependency against psdk
targets but xdk targets.
JIRA issue: N/A
2026-01-25 06:11:12 +09:00
Katayama Hirofumi MZ efca5040cb [SHELL32] Get PerceivedType default icon (#8627)
Related to #8626. Display the correct icon.
JIRA issue: CORE-19355
- Modify CFSExtractIcon_CreateInstance function to load
  PerceivedType default icon.
2026-01-24 10:08:02 +09:00
Katayama Hirofumi MZ 69f10f6d38 [SHELL32] Add access key to IDS_OPEN_VERB and IDS_EXPLORE_VERB (#8619)
Improve keyboard accessibility.
JIRA issue: CORE-12323
2026-01-23 22:11:48 +09:00
Katayama Hirofumi MZ 789f6c5481 [FONTEXT] Implement paste operation (#8615)
Support paste operation on Fonts folder.
JIRA issue: CORE-12861
- Add CFontBackgroundMenu.cpp and CFontBackgroundMenu.h
  to support background menu.
- Modify CFontExt::CreateViewObject and
  CFontExt::GetUIObjectOf methods.
- Re-implement foreground menu by using
  CDefFolderMenu_Create2 and CFontExt::MenuCallBack.
- Delete needless CFontMenu.cpp.
- Add IDS_PROPERTIES resource string.
2026-01-23 14:28:09 +09:00
Justin Miller 2865b6353b [UEFILDR] Revise disk access code (#8623)
This commit reworks how the uefidisk code works so it's not longer... completely wrong.
This also allows GPT disks to now be used on uefildr.
It's not perfect (as the correct solution is having freeldr load full efi device paths instead of arc like bootmgr does)
but this will work perfectly fine now. Well should.
2026-01-23 01:12:21 +00: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
Oleg Dubinskiy 27fde6f4dd [MMIXER] Further imrovements to volume control support (follow-up of 376708b)
Add more improvements and fixes to volume control implementation.
- Don't allocate and don't use an array for storing volume level values. Also, get rid from some stuff, which is not used any more (some fields of MIXERVOLUME_DATA structure and MMixerGetVOlumeControlIndex() function).
- Use the following formulas to properly convert the volume level values from the logical units range (0 - 65535) to the hardware Decibel (DB) range (defined by audio miniport driver): <decibels> = <units> * <range_in_db> / <range_in_units> + <minimal_level> (for setting the new value) and <units> = (<decibels> - <mimimal_level> + 1) * <range_in_db> / <range_in_units> (for getting the previous value), where <decibels> is a DB hardware value, <units> is logical units value, <rang_in_db> is the hardware range (DB), <range_in_units> is range in the logical units and <minimal_level> is the most minimum volume level value defined by an audio miniport driver.
- I've created this formula myself basing on my calculations and investigations (with some help from Hermes Belusca-Maito), so it's tested and confirmed to be working for all possible values range (at least for our official Intel AC97 driver, and, as tested later, Realtek HD audio).
- Do this in both cases when setting the new and when getting the previous volume value as well.
- Fallback to default values range -96 - 0 DB in case either the volume level property is not supported by audio miniport driver, or the values range is empty (SignedMinimum is equal to SignedMaximum and both of them typically have a 0 (zero) value). Realtek HD audio codec is one of such a drivers, so this fixes the volume control on real hardware too (tested on Asus-F5R notebook with Realtek ALC660 audio controller). Moreover, the volume values set by user are even properly saved (aren't lost) after reboot (unlike with Intel AC97 in VirtualBox or SoundBlaster in VMware)! Realtek probably uses another mechanism to write/read the value(s) to/from Registry, which is handled by the miniport (codec) driver instead.
This fixes some remaining bugs when changing the volume level, so now 1) min/max position of the volume bar can be reached correctly and 2) left/right balance sliders are now behaving properly (they don't affect position of each other anymore when moving them manually).
CORE-19189, CORE-19190
2026-01-22 16:49:09 +01:00
Oleg Dubinskiy c9911d3de9 [MMIXER] Revert "HACK: Decrease SteppingDelta for each volume value by 1"
This is actually a hack and isn't required anymore because I made a proper fix instead.
Doing -1 does not fix the problem correctly, but only makes a pseudo-effect that it's fixed by actually truncating each volume value, so then the volume sliders misbehaving does occur less (but it still does).
This reverts commit 206b52833f.
CORE-19190
2026-01-22 16:49:09 +01:00
Katayama Hirofumi MZ f6bb2c98d8 [SHELL32] Fix L'PerceivedType ' typo (#8620)
JIRA issue: N/A
2026-01-22 21:19:09 +09:00
Hermès Bélusca-Maïto 6a8c5f99a7 [FREELDR:NTLDR] Fix displaying the loaded modules list in SOS mode (#8616)
Fix minor regression after commits f81c1910ee and e56911f66b (PR #7488).

The `PeLdrImportDllLoadCallback` variable was exported as a function,
instead of as data, which was incorrect since it is a data pointer,
that is set by winldr code (in rosload.exe) to tell the PE loader
(residing in freeldr.sys) to perform an action when an imported DLL
is being loaded.
2026-01-22 12:03:29 +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
Katayama Hirofumi MZ 3342fc6633 [SYSSETUP][SDK] Set arrow to current task (#8598)
Follow-up of #8596.
JIRA issue: N/A
- Add IDI_ARROWICON (arrow-16x16.ico)
  icon and IDI_CROSSICON
  (cross-16x16.ico).
- Retrieve normal font from control.
- Set arrow icon to the current task.
- Set bold font to the current task.
- Set normal font to done tasks.
2026-01-22 08:24:21 +09:00
Hermès Bélusca-Maïto ee97db9f83 Christmas & new-year period has now ended. 2026-01-21 15:56:41 +01:00
Hermès Bélusca-Maïto fc75870f1c [WIN32SS:NTGDI] Addendum to commit 108db5b356 (PR #8536)
- In the `if (!psurf)` code path, unlock in the reverse locking order.
- Move the `SafeInData == NULL` check outside of `_SEH2_TRY` and just
  after the `ExAllocatePoolWithTag` call.
- Removing trailing whitespace.
2026-01-20 19:52:47 +01:00
Justin MillerandHermès BÉLUSCA - MAÏTO 108db5b356 [NTGDI] Minimal pass of fixing ExtEscape (#8536)
* [WIN32SS] Minimal pass of fixing ExtEscape
Resolves issues with the AMD/ATI GPU Driver and the Intel OpenGL ICD when used in fullscreen mode.

Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-01-20 17:56:03 +00:00
Timo Kreuzer 49f633517f [WIN32K:NTGDI] Fix last error for NtGdiMaskBlt 2026-01-20 12:35:55 +02:00