Commit Graph
87599 Commits
Author SHA1 Message Date
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
Eric Kohl c62ef77697 [KEYBOARD] Rename kbdgr1.dll to kbdgrist.dll
kbdgr1.dll is reserved for the German (IBM) keyboard layout but it is currently used by the German (RISTOME) keyboard layout.
2025-07-28 21:20:40 +02:00
Katayama Hirofumi MZ 915b771037 [EXPLORER][NTUSER] Notify ABN_FULLSCREENAPP and fix monitor code (#8254)
Enable ABN_FULLSCREENAPP notification.
Fix some monitor functions.
JIRA issue: CORE-7237
- Improve NtUserMonitorFromRect and
  NtUserMonitorFromWindow functions.
- Remove if-statement in
  OnWindowActivated function.
- Don't check WS_EX_TOOLWINDOW in
  IntIsWindowFullscreen function.
- Add IntGetMonitorFromRect helper
  function to commonize some code in
  monitor functions.
2025-07-28 17:58:59 +09:00
Eric Kohl fade0c3b89 [BOOTDATA] Fix resource id of Malayalam keyboard layout display name 2025-07-27 13:58:02 +02:00
Eric Kohl 7e1d9ef9bf [DHCPCSVC] Add DhcpEnumClasses and DhcpHandlePnpEvent stubs 2025-07-26 19:00:04 +02:00
Eric Kohl 76e5143e42 [IPCONFIG] Print proper error messages and more TCHAR fixes 2025-07-26 15:50:16 +02:00
Eric Kohl e5b35337fd [IPCONFIG] Get rid of tchar.h 2025-07-26 15:25:08 +02:00
Eric Kohl 4b53972724 [IPCONFIG] Print an error message on unrecognized or incomplete command line 2025-07-26 12:35:40 +02:00
Eric Kohl 4e425b54b6 [BOOTDATA] Add missing Locale for Bengali (Bangaldesh)
This should fix CORE-20213. Please test again.
2025-07-23 22:25:46 +02:00
Doug Lyons 996bde80a9 [WIN32K] Fix gdi/dib horizontal line draw function crashes (#8263)
* [WIN32K] Fix gdi/dib assembly code and 'C' code horizontal line draw function crashes.
Do not do subtracts that cause a wrap to a negative value when determining length.
This affects bit depths of 8, 16, 24, and 32 Bits per Plane.

CORE-19634
CORE-13532
2025-07-22 13:09:53 -05:00
Eric Kohl ea189a3048 [IPCONFIG] Implement the /setclassid option
The current implementation does not notify the dhcp client of the changed registry setting. Windows IPCONFIG calls DhcpHandlePnpEvent after setting the DhcpClassId registry value.
2025-07-20 13:59:39 +02:00
Timo Kreuzer 9750f6decd [RTL/x64] Improve RtlUnwindInternal
- Implement RtlpExecuteHandlerForUnwind in asm
- Implement RtlpExecuteHandlerForUnwindHandler
- Use the correct context in DISPATCHER_CONTEXT when unwinding
- Handle collided unwinds
2025-07-20 10:42:26 +03:00
Timo Kreuzer 4d21384d8f [COMPILER_APITEST] Add a test for collided unwind 2025-07-20 10:42:26 +03:00
Timo Kreuzer 6334168bf5 [COMPILER_APITEST] Enable some SEH tests for MSVC builds 2025-07-20 10:42:26 +03:00
Katayama Hirofumi MZ d958a24678 [NTUSER][USER32_APITEST] Support ShowWindow.SW_FORCEMINIMIZE (#8261)
One more step to support ghost windows.
JIRA issue: CORE-19671
- Add IntForceMinimizeWindow helper
  function.
- Use IntForceMinimizeWindow in
  co_WinPosShowWindow function.
- Enhance ShowWindow testcase in
  user32_apitest.
- Add mask to the return value of
  GetWindowLong.
2025-07-20 13:14:01 +09:00
Eric Kohl 6ebf15d838 [IPCONFIG] Call DHCP functions directly
Use DhcpAcquireParameters and DhcpReleaseParameters instead of iphlpapi functions.
2025-07-19 13:31:25 +02:00
Eric Kohl cb0c31945e [DHCPCSVC] DSAcquireParams and DSReleaseParams must return an error code 2025-07-19 10:52:46 +02:00
Eric Kohl 28b35625dd [DHCPCSVC] Change AdapterName parameter to UNICODE
DhcpAcquireParameters and DhcpReleaseParameters use a UNICODE AdapterName parameter.
2025-07-18 23:31:21 +02:00
Ratin Gao 49e652b7b7 [NTOS:PS] Implement ProcessImageFileNameWin32 information class 2025-07-17 18:18:47 +03:00
Whindmar Saksit 805d4c7eea [RAPPS] Added LnkParameters Generate field to set the shortcut parameters (#8262) 2025-07-17 16:28:34 +02:00