Commit Graph
87618 Commits
Author SHA1 Message Date
Timo Kreuzer b8abfb1392 [RTL] Fix random functions 2025-08-07 11:59:38 +03:00
Timo Kreuzer 5c1c28109f [WIN32KNT_APITEST] Add a delay-import hooks
This will change the dll name to the one appropriate for the current Windows version and report import failures.
2025-08-06 17:48:37 +03:00
Timo Kreuzer 844adc86c6 [WIN32U] Add win32u_2k3sp2 and win32u_xpsp2 as rostest files 2025-08-06 17:48:37 +03:00
Timo Kreuzer 5840b212a8 [DELAYIMP] Separate hook symbols from library code
This allows to define these functions in the importing module.
2025-08-06 17:48:37 +03:00
Timo Kreuzer 85aff698ca [DELAYIMP] Switch license to MIT
Agreed upon by Mark Jansen. Also update header to new format.
2025-08-06 17:48:37 +03:00
Timo Kreuzer dda1cb9346 [PSDK] Avoid NDK include in versionhelpers.h 2025-08-06 17:48:37 +03:00
Timo Kreuzer 6ad06fc731 [KERNEL32_APITEST] Fix SystemFirmware test 2025-08-05 16:20:02 +03:00
Timo Kreuzer 64701d0798 [NTOS:EX] Fix query of SystemFirmwareTableInformation 2025-08-05 16:20:02 +03:00
Timo Kreuzer 3a0f9f2fa0 [NTOS:EX] Fix query of SystemLookasideInformation
Prevents a failed ASSSERT
2025-08-05 16:20:02 +03:00
Timo Kreuzer b7066b9232 [TCPIP] Fix "mbox" queue synchronization
Use a KSEMAPHORE instead of a NotificationEvent to signal availability. This is to prevent satisfying the wait for multiple waiters, when only a single entry is on the list.
Fixes crashes on SMP builds.
2025-08-05 09:15:07 +03:00
Timo Kreuzer 069fc049db [TCPIP] Fix global synchronization on SMP
We cannot just raise IRQL! Instead use a global ERESOURCE, which allows to be acquired recursively, as required by LWIP.
2025-08-05 09:15:07 +03:00
Pierce Andjelkovic b4731b7f8f [NEWDEV] Correct typo in en-us locale (#8270)
Change "removeable" (uncommon British English spelling) to "removable" (standard US spelling) in the en-US locale.
2025-08-04 21:00:53 -06:00
Doug Lyons 9d325e6c46 [NET] Fix 'net use' command random fails (#8298)
CORE-20287

* Address reviewer comment by zeroing 'NETRESOURCE lpNet' in define.
2025-08-04 20:55:16 -05:00
Whindmar Saksit 58276e81ee [COMCTL32] ListView must update header font if it deletes the old font (#8287)
A bug fix for PR #7783
2025-08-03 23:33:00 +02:00
Eric Kohl 94a6102cd2 [DHCPCSVC] Convert the pipe based client-server interface to RPC 2025-08-03 22:39:36 +02:00
Eric Kohl a6d3787507 [DHCPCSVC] Remove obsolete functions
DhcpLeaseIpAddress, DhcpReleaseIpAddressLease and DhcpRenewIpAddressLease have been replaced by DhcpAcquireParameters and DhcpReleaseParameters
2025-08-03 14:14:18 +02:00
Eric Kohl 33696393e7 [IPHLPAPI] Update IpRenewAddress and IpReleaseAddress
IpReleaseAddress: Use DhcpReleaseParameters instead of DhcpReleaseIpAddressLease.
IpRenewAddress: Use DhcpAcquireParameters instead of DhcpRenewIpAddressLease.
2025-08-03 13:01:04 +02:00
Eric Kohl 959d3b9604 [CMAKE] Add add_rpc_file macro
The add_rpc_file macro enables us to use ACF files or set prefixes.
2025-08-03 11:06:32 +02:00
Timo Kreuzer 73b54ce2a6 [PSDK] Improve some headers 2025-08-03 10:37:24 +03:00
Timo Kreuzer d6cfd00ae2 [XDK] Add Read/Write helper functions 2025-08-03 10:37:24 +03:00
Timo Kreuzer c70f741627 [VCRUNTIME] Add initial intrin0.inl.h 2025-08-03 10:37:24 +03:00
Timo Kreuzer 41478e978c [VCRUNTIME] Add initial arm64intr.h 2025-08-03 10:37:24 +03:00
Timo Kreuzer 2d43fd458c [WINE] Header improvement
Add some sdk/ddk headers that contain wine specific definitions.
2025-08-03 10:37:24 +03:00
Mark Jansen dfc05a68a5 [APPHELP] Make some more tests pass 2025-08-01 21:53:38 +02:00
Mark Jansen 411b92440f [APPHELP_APITEST] Fix tests for Win10 + restore some tests for x64 2025-08-01 21:53:38 +02:00
Mark Jansen 552f858018 [ROSAUTOTEST] Add option to use libcurl 2025-08-01 20:49:29 +02:00
Doug Lyons d413de1b19 [WIN32K:ENG] Fix CyberBoard BSOD: Use 'MAXLONG' instead of 'MAX_COORD' in lStyleMax (#8279)
CORE-20209

* Add ASSERT's as suggested by @HBelusca.
2025-07-31 16:14:21 -05:00
Timo Kreuzer f5612437ee [PSDK] Update ntstatus.h 2025-07-31 16:00:13 +03:00
Timo Kreuzer e195303889 [PSDK][XDK] Update some definitions 2025-07-31 16:00:13 +03:00
Timo Kreuzer 05dc65bd17 [PSDK] Add ioapiset.h 2025-07-31 16:00:13 +03:00
Timo Kreuzer 76ef3c45a5 [PSDK] Add minwinbase.h 2025-07-31 16:00:13 +03:00
Timo Kreuzer db2889a983 [PSDK] Add minwindef.h 2025-07-31 16:00:13 +03:00
Hermès Bélusca-Maïto 4de70afa22 [THEMES][LUNAR] Fix German typo in translation 2025-07-31 13:35:29 +02:00
Hermès Bélusca-Maïto ba36b907ad [WINLOGON][WLNTFYTESTS] Implement loading notification DLLs in safe-boot mode (#8278)
Historical note:
Investigation shows that this functionality, introduced between builds
1902 and 1906 of Windows NT 5.0 (future 2000) Beta 3, has always been
"nop-ed" and has remained this way till Windows Server 2003.
The value read from the "SafeMode" registry value is unconditionally
overridden afterwards, causing the notification DLLs to always be loaded.

In ReactOS, this functionality is restored, and only the notifications
tagged as such are loaded in SafeMode.

Furthermore:
Analysis of strings in Win2000 and WinXP/2003 winlogon.exe, show that
the "Safe" registry value doesn't exist for notifications; instead,
it is named "SafeMode".
The "Safe" value appears only for the SensLogn (SENS Winlogon Event) handler
registry entry. My hypothesis is that the value name is a typo for the
"SafeMode" value. It has been introduced in the `\Winlogon\Notify\SensLogn`
registry entry for SensLogn around Windows NT 5.0 build 1946.
2025-07-30 17:46:54 +02:00
Hermès Bélusca-Maïto 96711c6c59 [WINLOGON] AddNotificationDll(): Validate the registry retrieved DWORDs (#8277)
Validate the DWORDs, instead of accepting any sort of value.

+ Add SAL2 annotations and improve a TRACE.
2025-07-30 12:42:31 +02:00
Hermès Bélusca-Maïto b74e243579 [WINLOGON][WLNTFYTESTS] The "Enabled" registry value doesn't exist for notifications (#8276)
Analysis of strings in Win2000 and WinXP/2003 winlogon.exe, show that
the "Enabled" registry value doesn't exist for notifications.

This value is actually only used by the ScCertProp (Smart Card Certificate
Propagation) notifications, in wlnotify.dll, to enable or disable certificate
progagation.[^1]

Note that whatever the "Enabled" registry value is, the notification DLL
is still loaded within winlogon.exe.

We however keep the `bEnabled` internal flag, so as to be able to disable
at runtime notifications that could not be delay-loaded, or that behave
erratically, etc.

[WLNOTIFY] Add a comment about the "Enabled" value in scard.c!SCardStartCertProp()

[^1]: For more information, see:
https://www.microfocus.com/documentation/securelogin/9.0/administration_guide/blm54qb.html?view=print
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/925884
2025-07-30 12:37:23 +02:00
Eric Kohl 67e47135da [BOOTDATA] Revert unintended change and fix more keyboard layout IDs 2025-07-29 23:25:31 +02:00
Carl J. Bialorucki b86422cd4b [SHELL32_APITEST] Several fixes (#8266)
Fix the shell32 apitests so that they pass on Windows Server 2003 - Windows 10. Many of these fixes are for Vista+, but the most important fixes are for ShellExecCmdLine and FindExecutable which had issues closing windows after tests and deleting test files. Failing to delete these files breaks the other test (i.e. running ShellExecCmdLine would break FindExecutable and vis-versa.)
2025-07-29 14:06:13 -06:00
Carl J. Bialorucki c9842e5aad Move /sdk/include/reactos/wine to /sdk/include/wine, reorder global includes, remove unneeded includes (#8258)
- Move sdk\include\reactos\wine to sdk\include\wine
- Reorder the directories in include_directories() to be closer to alphabetical. This should make it easier to determine what global include directories can be removed in the future.
2025-07-29 13:57:12 -06:00
Eric Kohl f02ac8bc1e [BOOTDATA][KEYBOARDS] Add the German (IBM) keyboard layout 2025-07-29 21:52:20 +02:00
Eric Kohl d908ad026d [BOOTDATA] Change the keyboard IDs of the Ristome, Ergo and Neo keyboard layouts.
Windows uses the keyboard layout IDs of the Ristome, Ergo and Neo layouts for the German(IBM), German Extended 1 and German Extended 2 keyboard layouts.
2025-07-29 21:42:26 +02:00
Timo Kreuzer 719ea022ec [UCRT] Fix GCC/Clang SIMD compilation
GCC and Clang need to mark functions that use SSE/AVX etc, either with a function attribute or a pragma around the function. strlen uses a template function that either uses SSE2 or AVX2. Previously the template was surrounded with pragmas to allow both SSE2 and AVX2, but that makes GCC assume that it can use AVX2 instructions even in the SSE2 version. To fix this the template instances are now build in individual compilation units for SSE2 and AVX, separate from the "dispatcher" function.
Now ucrtbase doesn't crash anymore on GCC build.

Another issue was the namespace around strnlen_mode, which has confused clang so much, that it forgot to instantiate the template code.
2025-07-29 09:22:15 +03:00
Timo Kreuzer e2deec8235 [UCRT] Fix __crt_fast_encode_pointer
GCC was optimizing away the xor with __security_cookie when passing nullptr_t, because the return value was also nullptr_t, assuming it must be nullptr.
2025-07-29 09:22:15 +03:00
Justin Miller 6891f03119 [SHELL32_WINETEST] Disable GetDisplayName test which is acting weird on Windows (#8273)
Disable GetDisplayName test which is acting weird on Windows
2025-07-28 22:39:04 -07:00
Doug Lyons 10bc0d4660 [WIN32K:ENG] Fix triangle gradient fill solid color versus gradient color selection logic (#8269)
CORE-13532
* Fix macros VCMPCLR and VCMPCLRS to correctly select between gradient color or solid color triangles.
* Remove hack from commit 1c0aedc and replace it with 'if' test before STEPCOL in 'while' test.
* Other assorted fixes for FILLLIINE macro starting position to completely fill triangles.
* Remove warning/FIXME: about IntEngGradientFillTriangle being broken.
* Precede some 'while' loops by 'if' tests to exclude possible loops.
2025-07-28 22:00:35 -05:00
Hermès Bélusca-Maïto 50b1242e99 [WLNTFYTESTS] Add extended tests for the Winlogon notifications
Introduce and use a minimal testing framework (minitest.h) based on
an updated version of `wine/test.h`.

Each notification handler becomes its own test. Useful macro and
function helpers have been introduced to simplify the code that is
duplicated for each handler.

See commit 38d07d3a24 (PR #8234) for the details of how to install
and use the notification dll.

These tests can exercise the notifications in the four cases, where
asynchronous events and user impersonation can be independently
enabled or disabled. To do this, the `Asynchronous` and `Impersonate`
registry `REG_DWORD` values, inside the `WLNotifyTests` subkey of:
  `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify`
must be set to their intended values[^1].

----

[^1]: https://learn.microsoft.com/en-us/windows/win32/secauthn/registry-entries

----

Current test results:

- When each notification is emitted, the DLL is loaded then unloaded:
  ```
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1307)
  WLNOTIFY(ac.b0):  Entering `DllMain`(hInst: 0x10000000, dwReason: 0x1, pReserved: 0x00000000)
  ...
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1307)
  WLNOTIFY(ac.b0):  Entering `DllMain`(hInst: 0x10000000, dwReason: 0x0, pReserved: 0x00000000)
  ```
  This doesn't happen on Windows. And indeed, it should _not_ happen,
  because otherwise the DLL would loose any of its internal global state
  between consecutive notification calls. This currently happens in
  ReactOS, where we can observe the following:
  ```
  modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:788: Test failed: **** WLEventLogon: ERROR: Wrong state NON-INITIALIZED, expected Startup or Logoff
  ...
  err:(modules\rostests\win32\winlogon\wlntfytests\wlntfytests.c:1036) **** WLEventLogon: Changing state NON-INITIALIZED to Logon
  ```
  and similar for every other notification.

- Test results for each notification:
  ```
  WLEventStartup: 30 tests executed (0 marked as todo, 1 failure), 0 skipped.
  WLEventLogon: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventStartShell: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  -- Note: missing WLEventPostShell --
  WLEventLock: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventUnlock: 30 tests executed (0 marked as todo, 4 failures), 2 skipped.
  WLEventStartScreenSaver: 30 tests executed (0 marked as todo, 10 failures), 0 skipped.
  WLEventStopScreenSaver: 30 tests executed (0 marked as todo, 9 failures), 0 skipped.
  WLEventLogoff: 30 tests executed (0 marked as todo, 5 failures), 2 skipped.
  WLEventShutdown: 31 tests executed (0 marked as todo, 5 failures), 0 skipped.
  ```
2025-07-28 22:04:05 +02:00
Hermès Bélusca-Maïto 46e0fffb54 [WINLOGON] Cleanup code in InitNotifications() and CallNotificationDlls()
- `KEY_ENUMERATE_SUB_KEYS` is redundant with `KEY_READ`;
- Simplify the `dwIndex` loop in `InitNotifications()`.
2025-07-28 22:04:04 +02:00
Hermès Bélusca-Maïto 1f7d34ec5b [WINLOGON] Simplify notification structure cleanup code
- Add DeleteNotification() helper;
- Invoke it in failure path in AddNotificationDll(), and in
  CleanupNotifications().
- Simplify iteration loops in CallNotificationDlls() and in
  CleanupNotifications().

Side-note: When doing `Notification = CONTAINING_RECORD(ListEntry, ...);`
where `ListEntry` iterates over a well-formed linked-list, the `Notification`
pointer can **NEVER** be NULL!
2025-07-28 22:04:03 +02:00
Hermès Bélusca-Maïto 627f8da3cd [WINLOGON] SASWindowProc(): Call PostQuitMessage(0) on WM_DESTROY
Now the WinMain() message loop correctly exits and we get to perform
last-time cleanup. However, the main thread must not exit (except under
certain conditions, not yet implemented), so we Sleep for an infinite
amount of time.
2025-07-28 22:04:02 +02:00
Eric Kohl 0e6c0af354 [KBDGRIST] Commit the proper files 2025-07-28 21:35:34 +02:00