- Ensures the choice selection characters are not duplicated, this passes one extra Wine test.
- Make the choice selection characters display as uppercase when appropriate.
- Return the errorlevel.
This fixes cmd_winetest hanging on the echo Y | choice /C ABCXYZ /D A /T 2 test.
- Reads the first character from stdin if stdin is not connected to a real console.
- Ensures the timeout never goes negative if there is a problem reading stdin.
Fix an out of bounds heap read when compacting the ghost device list.
Change the loop condition from `GhostPort < DeviceRelations->Count` to
`GhostPort < DeviceRelations->Count - 1` so the array shift never reads
past the last valid entry.
This PR implements two of the three hooks that allows you to run custom
applications during 2nd-stage setup (the 3rd hook is `...\$OEM$\Cmdlines.txt`,
but that requires file copy operations, etc.)
- `DetachedProgram` is documented[^1] for NT4...2003; it is started before
installation and `UserExecute` after.
- `UserExecute` is a great place to install VM Guest Additions, one reboot
less and you have shared folders/clipboard on the first normal boot.
[^1]: https://web.archive.org/web/20090902145959/http://technet.microsoft.com/en-us/library/cc757642(WS.10).aspx
- Added copy/move support for FolderItems collections.
- Added support for InvokeVerbEx on FolderItems collections.
- Added filter support for FolderItems collections.
Oleacc winetest depends on uiautomation.dll to be registered to use IAccessible interface. The oleacc DLL does not use the wine_dllregister library but instead registers the proxy class which results in the interface not being accessible.
This makes our built-in choice command compatible with how choice is implemented on NT5.2+ (it isn't included in Windows XP and below), while retaining compatibility with how it worked in DOS/9x.
- Changes /C and /T to also support the NT syntax.
- Adds the /CS, /D and /M switches.
This makes it easy for JIRA issue CORE-20043 to use this code to create a proper choice.exe
This is an RVA, so there is no reason to expand it to 64 bit on x64.
Fixes crash of dbghelp_apitest rsym on x64, as the test was using ULONG while dbghelp was using ULONG_PTR and rsym itself was using TARGET_ULONG_PTR.
In SetupDiCreateDeviceInterfaceRegKeyW(), force creating device and reference subkeys of device interface in Registry if they are not created yet.
- Change RegOpenKeyExW() to RegCreateKeyExW() for device and reference subkeys.
This properly fixes audio device name string improperly set in registry and displaying audio device name system-wide. Now it's properly written not only after re-installing audio driver from Device Manager, but also during 2nd setup stage, so it's correct just right after 1st boot.
Addendum to 1ef584c446 and b205c04173.
CORE-20603
- Initialize m_ReadOverlapped.hEvent as unset
- Reset m_ReadOverlapped.hEvent before use
- Zero-inialize m_ReadOverlapped (except for hEvent) before use
- Call CancelIo, if waiting on the asynchronous read event failed
- Create the actual symbolic link, instead of just instance key name (don't replace all \ by # and don't cut reference string from it) inside CreateSymbolicLink() internal helper of SetupDiInstallDeviceInterfaces(), to pass it in SetupDiCreateDeviceInterfaceRegKeyW() inside InstallOneInterface() internal helper later.
- Fix handling the received symbolic link inside SetupDiCreateDeviceInterfaceRegKeyW() itself. Except it to be the fully unmodified one, instead of transformed to an instance key name.
- Additionally, change the SetupInstallFromInfSection() call to SetupInstallFromInfSectionW(), since it's actually called with Unicode parameters from Unicode version of SetupDiCreateDeviceInterfaceRegKeyW(). Otherwise, if to not precisely specify Unicode version call, it might call ANSI function instead and hence will obviously not work correctly because of that.
This fixes regression with improper writing "CLSID" and "FriendlyName" values in "Device Parameters" subkey of device interfaces in Registry, because of reference key open failure, and therefore it also fixes detection of the audio device name in Sound Proeprties from Control Panel in particular.
Follow-up of b205c04173.
CORE-20603
Always rounding of unzooming coordinate values had caused
display glitch (e.g. black line on top edge in zooming).
JIRA issue: CORE-19466
- Add bRound parameter to UnZoomed function. If bRound is
TRUE, then do round by kernel32!MulDiv function.
Otherwise don't round.
- Add bRound parameter to CCanvasWindow::CanvasToImage.
- Make bRound = FALSE default.
- Use bRound = TRUE for CCanvasWindow::OnButtonDown,
CCanvasWindow::OnButtonDblClk,
CCanvasWindow::OnMouseMove, and CCanvasWindow::OnButtonUp.
CORE-20681
Send `WM_ACTIVATE` and `WM_ACTIVATEAPP` to the property sheet active page.
And do the same with `WM_ENABLE`, `WM_QUERYENDSESSION`, `WM_ENDSESSION`,
and `WM_DEVICECHANGE`, after sending them to the tab control first.
Similar in spirit to commit d09c3d0af8.
Translate several missing English strings and fix translation error in the context menu.
- Update `IDS_MOVETOMENU` from `"Di&zini kopyala..."` to `"Di&zine taşı..."`. The previous translation mistakenly used "kopyala" (copy) for a move operation, which caused confusion and duplicated string appearance in the shell context menu.
- Complete translations for various previously untranslated strings (including advanced folder options, visual effects, and shortcut run states).
Fix ACPI table discovery on the UEFI boot path by teaching the ACPI OSL
to use the loader-provided ACPI root table information instead of relying
only on legacy BIOS RSDP scanning:
- Build a synthetic RSDP from the ACPI BIOS configuration node
populated by the bootloader
- Fallback to the old scan only if that data is unavailable
- Keep full 64-bit physical addresses when mapping ACPI tables
- Improve failure diagnostics if initialization still fails
This lets ACPICA initialize from the UEFI-provided RSDT/XSDT path.
CORE-11954
So QEMU Q35 on UEFI is now able to discover ACPI tables through the loader-
provided root table path, which fixes 0x7B INACCESSIBLE_BOOT_DEVICE bugcheck:
https://github.com/user-attachments/assets/25d4d9c9-4197-496b-84f9-e5642c65809d
This will be compiled as a dummy in the test library, but in the unit test it will actually initialize the required RTL things.
For now it is only RtlpInitializeVectoredExceptionHandling.
This prevents a problem with the RtlVirtualUnwind test.
- Fix reading of test list. Fixes large test lists, that previously got truncated and could result in a crash.
- Prevent crash on parsing invalid test lists.
- Use an std::string for the list storage.
Support drawing with dithering on
monochrome palette mode.
JIRA issue: CORE-15990
- Enhance drawing routines for
dithering in drawing.cpp.
- Add VirtualBrush class to the
tools model in order to virtualize
the drawing colors.
- Move PaletteModel::CreateDitherBrush
to drawing.cpp ::CreateDitherBrush.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
CORE-19946
Adapted from PR #7577
Implement the undocumented `IsServerSideWindow()` function in user32.
It checks whether a window has a window procedure that resides in kernel
mode, and returns a boolean condition based on the appropriate internal
window state flag (`WNDS_SERVERSIDEWINDOWPROC`).
This function is not officially documented by Microsoft, but there exists
unofficial documentation[^1] for it.
It is required and used internally by uxtheme.dll from Windows XP/2003/Vista/7/etc.
The log spams with it a lot, when using uxtheme.dll from Windows in ReactOS.
[^1]: https://undoc.airesoft.co.uk/user32.dll/IsServerSideWindow.php
CORE-19946
Adapted from PR #7577
This function tests whether a window has a window procedure that resides in kernel mode.
It is not documented by Microsoft, but unofficial (3rd party) documentation[^1] exists.
It is required and used internally by uxtheme.dll from Windows XP/2003/Vista/7/etc.
[^1]: https://undoc.airesoft.co.uk/user32.dll/IsServerSideWindow.php
Co-authored-by: Mohammad Amin Mollazadeh <[email protected]>