3831 Commits
Author SHA1 Message Date
Timo Kreuzer da6892ede5 [PSDK] Update gdiplus headers to Wine-10.0
This reverts most of the useless reformatting. Don't reformat wine headers. It only makes syncing harder.
2026-05-16 10:43:08 +00:00
Timo Kreuzer 151c67ebfc [ROSTESTS] Implement automatic test discovery
This uses the START_TEST macro to create test entries in a ".test" section in the binary.
2026-05-15 16:50:48 +00:00
Eric Kohl 4bb73fe3c9 [NETSH][REACTOS] Improve MatchTagsInCmdLine and add NsGetIfNameFromFriendlyName stubs.c
These functions are used by the WinXP ifmon.dll when the 'interface ip set address' command is used.
2026-05-14 15:19:50 +02:00
Ahmed ARIF 99ec6cbf07 [CMLIB] Fix hive validation loop for missing bins 2026-05-14 11:37:59 +02:00
Hermès Bélusca-Maïto a46e1e96ec [BOOTDATA][CMAKE][MKSHELLLINK] Improve shell link shortcuts creation for the LiveImage (#8936)
CORE-15156, CORE-19691, CORE-19692

Finally get rid of the livecd_start.cmd hack introduced waaaay back
in commit ff6d7b0236 (r54514)!
See also commits ea682b6909 (r54512) and 71867403fd (r54513).

For target paths, use the shell "special shell folder" syntax:
`shell:windows\...` or `shell:system\...`, introduced in commit
7b081be46d (PR #7158) by Whindmar Saksit.

Specify an explicit icon path and index for the "Read Me.lnk" shortcut.

Includes ideas from PR #7154 by Katayama Hirofumi MZ.

The generated shell links are confirmed to work on ReactOS, but also on
Windows 2003 and Windows 7.

- Change the MKSHELLLINK icon parameter syntax to be: `-i [icon_path[,nr]]`
  where, either both `icon_path` and icon index are given, separated by
  a comma ',' , or, either the `icon_path` is given but the index is
  optional (default: 0), or, only the icon index is given, in which case
  the icon path is set to the target instead.

- Use a `VERBATIM` command-line for `add_custom_command()`, so that *nix
  builds can cope with parameters containing backslashes.

- The shortcut target path, working directory, command-line arguments,
  and icon path all may specify explicit Win32 environment variables
  (like `%SystemRoot%`, `%HOMEDRIVE%`, etc.). Because these environment
  variables are specified as data given to the build tool via CMake,
  **AND** we have to workaround keeping these variables unexpanded when
  they are transmitted to the tool via CMD.EXE (on builds made on Windows),
  specify these variables in an "escaped" format, using `^%` instead:
  `^%SystemRoot^%`, etc.
  Additionally these paths may be explicitly quoted and passed that way
  to the MKSHELLLINK tool.

  In order to deal with both unquoting the strings and unescaping the
  environment variables, introduce a helper function and invoke them on
  the aforementioned strings.
2026-05-13 22:16:07 +02:00
Hermès Bélusca-Maïto bc70254ad9 [MKSHELLLINK] Add a verbose mode for diagnostics, disabled by default (#8936) 2026-05-13 22:16:06 +02:00
Hermès Bélusca-Maïto af0cb55edb [MKSHELLLINK] Support link target and icon paths containing environment variables (#8936)
CORE-15156, CORE-19691, CORE-19692

- When specifying a "special shell folder" in the shortcut target,
  e.g.: `shell:windows\system32\cmd.exe` , or: `shell:system\cmd.exe`,
  resolve it using a ReactOS-specific path, but also use a version
  using unexpanded environment variables: for both examples,
  `%SystemRoot%\system32\cmd.exe`

- Whenever the shortcut target or the icon path contains unexpanded
  environment variables, add associated `EXP_SZ_LINK` data blocks.

- Use the previously-introduced ANSI-to-UTF16 `my_mbstowcs()` routine
  to convert the ANSI strings to Unicode for the `EXP_SZ_LINK` data blocks.
2026-05-13 22:16:05 +02:00
Hermès Bélusca-Maïto e505a8dbaa [MKSHELLLINK] Support creating Unicode-aware shortcuts (#8936)
Support the creation of shortcuts that can use Unicode versions of
their name (description), relative path, working directory, command-
line arguments, and icon location.
This option can be selected at runtime with a switch.

Additionally:

- Ensure that `wchar_t` is 16-bit wide.

- Introduce and use a "poor-man" ANSI-to-UTF16LE `my_mbstowcs()` routine
  to convert the ANSI strings, for the Unicode scenario mentioned above.
  We cannot use the host mbstowcs() routine, since on *nix systems the
  iconv library being used may have been compiled with a 32-bit `wchar_t`
  (even if the tool is compiled with: `-fshort-wchar -fwide-exec-charset=UTF-16LE`),
  as this is the case with the GitHub actions build bots.
2026-05-13 22:16:04 +02:00
Hermès Bélusca-Maïto b36fd06b70 [MKSHELLLINK] Don't care about the DOS name of PIDL path elements (#8936)
Keep the old code just for reference purposes.
2026-05-13 22:16:03 +02:00
Hermès Bélusca-Maïto d6f4c0887a [MKSHELLLINK] Fix a bug in the special shell folder handling code (#8936)
Addendum to commit 7b081be46d (PR #7158).

CORE-15156, CORE-19691, CORE-19692

Since commit 7b081be46d (PR #7158), one can create shell links that
point to a file in a subdirectory of SystemRoot (e.g. X:\reactos) or
SystemRoot\system32 using a shell "special shell folder" syntax, for
example:
  `shell:windows\Readme.txt` (--> X:\reactos\Readme.txt) ,
  `shell:windows\system32\cmd.exe` , or:
  `shell:system\cmd.exe` (--> X:\reactos\system32\cmd.exe) .

An `EXP_SPECIAL_FOLDER` data block allows parts of a shortcuts pidl
to be overridden by such a special folder.

- In these cases, try to build the shortcut pidl such that it faithfully
  mirrors the intended path. For example, when using `shell:system\cmd.exe`,
  resolve the `shell:system` part to `X:\reactos\system32` instead of
  just `X:\reactos` ; this helps understanding what happens when
  spelunking into such a shell link. This also helps when converting
  such a path to one containing unexpanded environment variables, for
  the purposes of making the Windows explorer shell show the correct
  shortcut target path, or resolve it independently of the SystemRoot
  being used; and, to be able to use the path for the shortcut icon.

- Get rid of the `index`/`specialindex` variables.
  These were used for making the `EXP_SPECIAL_FOLDER` data block point
  to the correct path suffix part that follows the special path prefix
  in the ID list.

  Hardcoding its value caused problems when the special path prefix is
  made to contain more path elements than just "X:\reactos". For example,
  "X:\reactos\system32" in the case of the `shell:system` prefix.
  Instead, retrieve the length of the special path prefix, then, compare
  it with the length of the path elements being parsed in the loop.

  ----

  This problem was made explicit when the the following code path is run:
  ```
  shell32!CShellLink.cpp:CShellLink::Load(IStream *stm)
  --> ILCombine(folder, m_pPidl + pSpecial->cbOffset)
  ```
2026-05-13 22:16:03 +02:00
Hermès Bélusca-Maïto 55092de280 [MKSHELLLINK] Enhance the code (#8936)
- Use the `bool` type from `stdbool.h`

- Update "Specification" URL, using instead the
  "[MS-SHLLINK]: Shell Link (.LNK) Binary File Format"

- Document which structures in `undocshell.h` correspond to those
  in MKSHELLLINK.

- Add `SLDF_*` constants from PSDK `shlobj.h` for consumption, and
  alias the tool-specific `LINK_*` ones to these.

- The first member of the `LNK_HEADER`/`SHELL_LINK_HEADER` structure
  is not a signature, but its size.
  Fix the `FILETIME` fields ordering. The `IconIndex` member is signed.
  The `HotKey` member is a 16-bits value.

- The third member of the `ID_LIST_GUID`/`tagGUIDStruct` structure is
  not "dummy", but is a sort-order. Add also some known corresponding
  values, and unhardcode the value used in the code.

- Make the `is_path_separator()` return a `bool`, and use the helper
  more thoroughly in the code.

- Improve the help/usage text shown by the tool.

- In case an invalid/unknown argument is encountered, set the `bHelp`
  flag just after showing the error, so as to display the tool usage
  and bail out early.

- Improve/clarify some code comments.

- Update the file header notice.
2026-05-13 22:16:02 +02:00
Hermès Bélusca-Maïto 3a3b16af0d [BOOTDATA][CMAKE] Improve the add_livecd_shortcut/add_link helpers (#8936)
CMakeLists.txt: `add_livecd_shortcut()`:

Turn the macro into a function. Instead of keeping a `LIVECD_SHORTCUTS`
global-scope list variable, just define a `livecd_links` custom target
as initially empty, then, using `set_property()`, directly append to it
its "SOURCES" i.e. generated .lnk files.
(This is equivalent to using `target_sources(livecd_links PRIVATE ...)`
only in CMake 3.20+ for the custom target.)

CMakeMacros.cmake: `add_link()`:

- Since both `name` and `path` parameters are mandatory, make them
  explicit in the function declaration instead of defining them as
  "optional" parameters.

- Remove the `set_source_files_properties(... PROPERTIES GENERATED TRUE)`
  invocation that followed the `add_custom_command(...)` call, since,
  per the documentation[^1],
  "Each output file will be marked with the `GENERATED` source file
  property automatically." (Since CMake 3.2 at least.)

[^1]: https://cmake.org/cmake/help/v3.17/command/add_custom_command.html
2026-05-13 22:16:00 +02:00
Eric Kohl 425ea0378b [NETSH][REACTOS] Add MatchTagsInCmdLine stub
MatchTagsInCmdLine is similar to PreprocessCommand except that the parameters dwMinArgs and dwMaxArgs are missing.
2026-05-11 22:56:06 +02:00
Timo Kreuzer 4bf2a30395 [WIDL] Remove a hack that inserted WIN32_LEAN_AND_MEAN into headers
This was supposedly to improve compile times, but it breaks our headers.
2026-05-11 18:21:34 +00:00
Timo Kreuzer fa433604cf [COMSUPP] Define WIN32_LEAN_AND_MEAN
This is needed to prevent compile errors, when _INC_WINDOWS is defined.
So far WIN32_LEAN_AND_MEAN is wrongly defined by some idl generated headers.
In VS with native headers similar issues exist.
2026-05-11 18:21:34 +00:00
Timo Kreuzer 101f7652df [UUID] Don't use a precompiled header
We cannot use a precompiled header, because it would include headers before including initguid.h, preventing GUIDs to be defined.
2026-05-11 18:21:34 +00:00
Timo Kreuzer a596d654b5 [PSDK] Update some files from wine-10.0
- Import adserr.h
- Sync adshlp.h
- Sync iads.idl
2026-05-11 18:21:34 +00:00
Ahmed Arif 45303a2782 [PEFIXUP] Recalculate checksums for kernel-mode images (#8969)
lld can leave the PE checksum field zero for reproducible output. This is acceptable for user-mode images, but Windows rejects kernel-mode images without a valid checksum.

Keep preserving linker-produced zero checksums for other images, but force checksum recalculation when pefixup is operating on a kernel-mode image.

This was found while validating Clang-built amd64 kmtest drivers against Windows 7: the same driver source built with GCC loaded, while the Clang/lld-built .sys failed with ERROR_BAD_EXE_FORMAT / 0xC1. Recalculating the PE checksum made the Clang-built driver load and the tests run correctly.
2026-05-11 00:48:41 +03:00
Serge Gautherie 25a6fdf867 [NTOS:MM] Convert some annotations to SAL2 and fix them
And add a specific ASSERT(SectionOffset) in MmMapViewOfSection().
2026-05-10 11:05:30 +00:00
Alex Mendoza d8f0c3bef2 [PSDK] Add missing values to _APTTYPEQUALIFIER (#8873)
Add missing `APTTYPEQUALIFIER_APPLICATION_STA` (enum 6) and `APTTYPEQUALIFIER_RESERVED_1` (enum 7) to `_APTTYPEQUALIFIER`.

Documented at:
https://learn.microsoft.com/en-us/windows/win32/api/objidl/ne-objidl-apttypequalifier
2026-05-10 00:48:42 +02:00
Eric Kohl ba05130718 [PSDK] Fix a type in netcfgx.h 2026-05-09 23:16:03 +02:00
Timo Kreuzer 156faa5d6a [PSDK] Update devpkey.h from Wine-10.0 2026-05-08 19:30:33 +00:00
Timo Kreuzer d50588f132 [SDK/WINE] Add some headers from Wine-10.0
- wine/ntgdi.h
- wine/d3dukmdt.h
- wine/ddk/d3dkmthk.h

These are needed for gdi32_winetest
2026-05-08 19:30:33 +00:00
Timo Kreuzer 1f44845067 [SDK] pnp.idl: Guard DEVPROPKEY from redefinition 2026-05-08 19:30:33 +00:00
Timo Kreuzer 4ad3fcbcaf [SDK] setupapi.h: Add SetupDiGetDevicePropertyW 2026-05-08 19:30:33 +00:00
Timo Kreuzer e7216ce67f [RTL/x64] Improve RtlCaptureContext/RtlRestoreContext
In user mode use fxsave64/fxrstor64, which handle legacy FP, MMX and XMM and MXCSR, in kernel mode save/restore XMM registers and MXCSR manually.
2026-05-08 19:04:31 +00:00
Serge Gautherie bc83700b58 [CMAKE] gcc: Allow warnings on CMAKE_BUILD_TYPE=MinSizeRel too (#8332)
- Skip -Werror
- Also merge amd64 case

Follow-up to 0.4.16-dev-848-g 6c7d2a2e25.
2026-05-08 14:10:23 +03:00
Timo Kreuzer d8a1ba1fea [MLANG_WINETEST] Sync to Wine-10.0 2026-05-08 07:30:20 +00:00
Katayama Hirofumi MZ b0ed661f57 [SHLWAPI][SDK] Follow-up of #8917, #8918, and #8920 (#8947)
Follow-up of #8917, #8918, and
#8920.
JIRA issue: CORE-19278
- Add a comment to IStream_ReadPidl
  function.
- Move CharLowerNoDBCSA/W and
  CharUpperNoDBCSA/W prototypes
  in <shlwapi_undoc.h>.
- Move SHDIALOG structure from
  <shlwapi_undoc.h> into utils.cpp
2026-05-07 21:32:08 +09:00
Katayama Hirofumi MZ c6bcf2ac10 [SHLWAPI][SHLWAPI_APITEST][SDK] Support SHInvokeCommandsOnContextMenu (#8919)
Implementing missing features...
JIRA issue: CORE-19278
- Implement
  SHInvokeCommandsOnContextMenu
  function.
- Modify shlwapi.spec.
- Add prototype to <shlwapi_undoc.h>.
- Add
  SHInvokeCommandsOnContextMenu
  testcase.
2026-05-07 21:18:24 +09:00
Timo Kreuzer 054c83ffda [WINE] Remove hacks for missing _swprintf / _vswprintf 2026-05-07 06:27:58 +00:00
Timo Kreuzer 81b230dc80 [CRT] Fix c++ overload 2026-05-07 06:27:58 +00:00
Timo Kreuzer 0c23c312cb [CRT] Add C++ overload for swprintf_s 2026-05-07 06:27:58 +00:00
Timo Kreuzer da64ad34ef [CRT] Stop implementing non-conforming swprintf / vswprintf
- Don't compile the non-conformng swprintf (it is identical to _swprinf)
- Rename swprintf to _swprintf
- Forward non-conforming exports to the underscored versions in CRT dlls
2026-05-07 06:27:58 +00:00
Timo Kreuzer 1cf31524d5 [REACTOS] Stop using non-conforming swprintf / vswprintf
Use the underscored versions instead.
2026-05-07 06:27:58 +00:00
Mikhail Tyukin bb63bb36ed [LIBTIFF] fix x64 regression (#8830)
Fix x64 regression seen at https://reactos.org/testman/compare.php?ids=106703,106708,106714 due to #8808 by reverting some changes

CORE-18674
2026-05-06 11:14:20 -04:00
Timo Kreuzer f2c094caf3 [LIBWINE] Fix debug output synchronization
Previously the debug macros printed file/line, class and message separately, which resulted in possible intermingling with other debug messages, e.g. from rosautotest. This caused random parse errors for testman.
This is fixed by using a temp buffer for the prefix in rosfmt_default_dbg_vlog and then calling vDbgPrintExWithPrefix. Also make the __WINE_DPRINTF macro identical between GCC and MSVC.

See ROSTESTS-178
2026-05-06 08:34:12 +00:00
Timo Kreuzer 5be29348db [NTDLL_WINETEST] Fix failing tests on Windows Vista 2026-05-05 07:44:54 +00:00
Carl J. Bialorucki 94e7bbcc6b [SDK] Update some headers
Preparation for ntdll_winetest sync.
2026-05-05 07:44:54 +00:00
Hermès Bélusca-Maïto ba7a6fc7d9 [SHELL32][SDK] The SHELL_LINK_HEADER::nIconIndex member is a signed 32-bit integer 2026-05-04 22:02:21 +02:00
Eric Kohl 06138e3c98 [REACTOS] Add NhpAllocateAndGetInterfaceInfoFromStack to a header file 2026-05-03 19:46:04 +02:00
Eric Kohl 241a989fa3 [REACTOS] Add missing type declarations for ITcpipProperties_Unknown1 2026-05-03 13:44:19 +02:00
Katayama Hirofumi MZ 4e01961e20 [SHLWAPI][SHLWAPI_APITEST][SDK] Support CharLowerNoDBCSA/W and CharUpperNoDBCSA/W (#8920)
Implementing missing features...
JIRA issue: CORE-19278
- Implement CharLowerNoDBCSA, CharLowerNoDBCSW,
  CharUpperNoDBCSA, and CharUpperNoDBCSW functions.
- Modify shlwapi.spec.
- Add prototypes into <shlwapi_undoc.h>.
- Add CharUpperNoDBCS testcase.
2026-05-03 10:11:56 +09:00
Katayama Hirofumi MZ 0cd3b555b1 [SHLWAPI][SHLWAPI_APITEST][SDK] Support IStream_ReadPidl and IStream_WritePidl (#8918)
Implementing missing features...
JIRA issue: CORE-19278
- Implement IStream_ReadPidl and IStream_WritePidl
  functions.
- Add prototypes to <shlwapi_undoc.h>.
- Add IStreamPidl testcase.
2026-05-03 10:10:27 +09:00
Eric Kohl d9d27f8943 [MSV1_0][DDK] Improve LsaApCallPackage
- Implement MsV1_0Lm20ChallengeRequest for LsaApCallPackage
- Add message type checks
2026-05-02 19:24:58 +02:00
Katayama Hirofumi MZ 8727bfd634 [SHLWAPI][SDK] Support SHDialogBox (#8917)
Implementing missing features...
JIRA issue: CORE-19278
- Implement SHDialogBox function.
- Modify shlwapi.spec.
- Add prototype to <shlwapi_undoc.h>.
2026-04-30 10:54:19 +09:00
Eric Kohl c04c092a3e [REACTOS][NETCFGX] Add the undocumented ITcpipProperties interface to the tcpip notify object 2026-04-29 21:09:54 +02:00
Eric Kohl 2586be9bc6 [REACTOS][NETCFGX] Implement INetCfgComponentPrivate_fnUnknown1
It is a QueryInterface method for notify objects.
2026-04-29 20:33:06 +02:00
Carl J. Bialorucki 129ef359f0 [SDK] Raise KERNEL_VERSION_PATCH_LEVEL to 17
0.4.17-dev starts now.
2026-04-28 20:35:14 -05:00
Hermès Bélusca-Maïto b2e33f26eb [REACTOS] Merge our bootcd and livecd into an all-in-one ReactOS BootCD (#7313)
CORE-9069, CORE-13525, RELEASE-11

This new BootCD contains the functionality of both the original bootcd
(text-mode 1st-stage installer) and the livecd (that will include the
1st-stage GUI installer later).
Our separate livecd ISOs become obsolete, and this completely removes
the need for the so-called "hybridcd" ISO.

Some details:

- The "hybridcd" build target is completely removed, since now the new
  BootCD *is* basically what we used to call "hybridcd".

- The "livecd" build target is kept so far (to minimize the code changes),
  but internally I start to refer to it as "LiveImage", and is reduced
  to a minimum.

  A minimal non-bootable "liveimg.iso" is built (but currently not
  included within the BootCD). Its purpose will be to implement the
  "ReactOS Live" functionality as a RAMDISK.
  (We currently don't support other file formats apart from ISO and
  flat disk for a RAMDISK).

  The "ReactOS Live" (non-RAMDISK) is implemented by adding to the
  BootCD file tree the files from the LiveImage.
  These files add two root directories, "Profiles" and "reactos"
  (which is the SystemRoot for the non-ramdisk LiveImage).

- The minimal text-mode ReactOS installation used for the 1st-stage
  installer, including USETUP itself, and the executable for the
  1st-stage GUI installer and the reactos.cab (installation source),
  are moved to the root directory called "i386" (ideally, one directory
  per architecture).

- The "bootcdregtest" target, i.e. the ISOs we feed our testbots with,
  are left untouched, i.e. they are only constituted of the 1st-stage
  text-mode installation only, but placed in a per-architecture root
  directory ("i386", etc. as for the bootcd).

- Remove the ACPI APIC/SMP entries from bootcd.ini. They will be made
  available via the Advanced Boot Options F8 menu in Debug builds, for
  testing purposes only, in a subsequent commit.

This commit is based upon an older SVN one:
svn path=/branches/setup_improvements/; revision=75273
2026-04-28 23:11:10 +02:00