WinDBG can do some local debugging using 'windbg -kl'. In that case,
WinDBG tries to directly use NtSystemDebugControl. If this function
returns an error, WinDBG extracts a driver from its resources.
WinDBG will send IOCTLs to this driver, and this driver will call
KdSystemDebugControl.
However, on livecd (where %SYSTEMROOT% is read-only), WinDBG is unable
to extract the driver from its resources, and can't use the driver to
call KdSystemDebugControl.
As a work-around, allow all control classes in NtSystemDebugControl
in case of livecd.
WinDBG local debugging now also works on livecd (windbg -kl).
- Add SEH probing for user buffer
- Mark some classes as i386 only
- Explicitly return STATUS_NOT_IMPLEMENTED on disabled classes (must use KdSystemDebugControl instead)
- Explicitly return STATUS_NOT_IMPLEMENTED on not implemented classes
- Return STATUS_INVALID_INFO_CLASS on all other classes
`DeviceInformation->DeviceName.Buffer` was already freed via the previous
`FreePool(TargetDeviceName.Buffer);` call,
since `DeviceInformation->DeviceName` was set to `TargetDeviceName` above
in the code. This resulted in a pool double-free, triggering a corruption
of the pool, and a BSoD.
What had to be freed instead, is `DeviceInformation->SymbolicName.Buffer`
that is allocated at the beginning of the function.
URLs are getting old. We have to
update URLs for documentation
purpose.
JIRA issue: CORE-19963
- Refresh old URLs.
- Add " (DEAD_LINK)" labels
to dead links.
- Use MS Learn links rather
than MSDN ones.
- Some dead links revived by
Web Archive.
- Don't change Wine Tests
and Wine Sync.
- Don't change 3rd party libraries.
- Don't append "redirected" labels.
Use #pragma section only for MSVC (and Clang-cl), because Clang doesn't like allocating non-const variables in a read-only section, while GCC doesn't understand these pragmas and ignores them.
Start menu items were created after the wizard had finished. This patch moves the creation of the start menu items into the process page of the wizard and enables the 2nd item of the task list.
Implementing missing features...
JIRA issue: CORE-19278
- Move function definition from
stubs.cpp to utils.cpp.
- Implement SHIsBadInterfacePtr
function in utils.cpp.
- Add prototype to <undocshell.h>.
Defines can cause problems, like previously with the end define, which caused a jump to label ".end" to be interpreted as a jump to ".", which is the current address, resulting in an infinite loop.
Remove obsolete CODESEG
Fixes crash of mshtml_winetest:htmldoc (introduced by 716613c). Please do not ask me why.
The test started crashing with commit 716613cddc "[CMAKE] Use new policies for CMP0005 and CMP0018 (#1481)", which moved this definition from the command line to urlmon_main.h. This got later removed by commit 6c3c2e33f6 "[URLMON] Sync with Wine Staging 4.18. CORE-16441"
Our FT_Bitmap_Convert function had a hack to make the
bitmap image compatible to ReactOS. I think the hack on
FT_Bitmap_Convert should be separated from our font
engine.
JIRA issue: CORE-16047
- Add FT_Bitmap_Convert_ReactOS_Hack function, that is
based on FT_Bitmap_Convert, and split the hack of
FT_Bitmap_Convert.
- Use FT_Bitmap_Convert_ReactOS_Hack in
IntGetBitmapGlyphWithCache function instead of
FT_Bitmap_Convert.
- Modify ftfd.spec to add
FT_Bitmap_Convert_ReactOS_Hack.
The VolumePath buffer returned by IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATH
contains one string stored as a multi-NUL-terminated string, whose
total length is given by its `MultiSzLength` member.
The DosName UNICODE_STRING just returns the (single) string as a normal
NUL-terminated string. So, we need to remove the two NUL-terminators
from the `MultiSzLength` count to retrieve the correct length.
- When trying to find a device, don't fail with STATUS_NOT_FOUND if no
associated symbolic links are present. Instead, that test was wrong,
and should go out of the search loop to do the drive-letter processing.
Addendum to commit f9f5a78715.
- In addition, when using the associated-device method, fix the list
used to retrieve the corresponding device.
- In the TryWithVolumeName: block, reset DeviceString to NULL after
freeing, so that we can correctly fail with STATUS_NOT_FOUND if no
suitable device was found, before initializing the output data.
- Use FIELD_OFFSET to correct structure and member instead of hardcoding
sizeof-s of fields until the member of interest.
- Fix a bug in MountMgrQueryDosVolumePath() where the FIELD_OFFSET used
in the entry structure size validation was incorrect.
FIELD_OFFSET(MOUNTMGR_TARGET_NAME, DeviceNameLength) is == 0 since
DeviceNameLength is the first member of the MOUNTMGR_TARGET_NAME
structure. The intended member was DeviceName.
Addendum to commit f9f5a78715.
- Limit the HarddiskVolume loop to 32 trials (instead of an unknown
number of them). Ideally the list of volumes has to be queried from
the volume manager, instead of hardcoding them (TODO).
- Verify that the buffer returned by IoVolumeDeviceToDosName() is
indeed a unicode multi-string (ends with two NULs), and, in the
case it specifies a volume GUID, that it's a valid one.
- Use %lu instead of %lx for printf-ing last-errors;
- Don't call GetLastError() within ok, or after a previous invocation,
when the aim is to retrieve the last-error set by a tested API.
Instead, store its value in a local variable, that is then used in
the ok() tests.
- Use win_skip() only for functionality that _may_ not be implemented
in Windows/ReactOS yet, but not for unexpected situations leading to
tests being skipped.
- Add comments; improve buffer size specifications.
- Reformat the file license header.
Follow the standard way.
JIRA issue: CORE-19469
- Use STDMETHODIMP and override keyword
instead of virtual HRESULT STDMETHODCALLTYPE.
- Delete CTaskBand::ProcessMessage and
CTaskBand::ContainsWindow methods.
I think they are useless.
Support Unicode on Start Button
context menu for international text
support.
JIRA issue: N/A
- Support Unicode in
CStartMenuBtnCtxMenu::InvokeCommand
method by using
CMINVOKECOMMANDINFOEX structure.
Supporting raster fonts. Using
num_faces is the generic way.
JIRA issue: CORE-16165
- Use FT_FaceRec.num_faces instead
of TT_Face.ttc_header.count in
counting the font faces in
IntGdiLoadFontsFromMemory function.
This avoids a linker error due to a duplicated symbol in ntdll and the statically linked chkstk library. This happens when the linker first resolves _chkstk from the CRT or the chkstk library (which also pulls in _alloca_probe(_16)) and then tries to resolve _alloca_probe(_16) from ntdll.
This setting can be overwritten by defining the CMake variable HOST_BUILD_TYPE.
The target build type is passed to the host build as TARGET_BUILD_TYPE CMake variable.
This improves time to build cab+iso:
MSVC x86: 37s -> 28s
GCC x86: 32s -> 16s
Follow-up of 42d5dfd3de.
- Revert "shell32: Fix ShellExecute for non-filespec paths." 0bad544aab.
- Apply "shell32: Look for the file name without extension also for the path search case." 38b6640be9.
- Clear leading/trailing whitespaces (an improvement by Doug Lyons).
- Update the comment for xlpFile buffer definition, to match the current code behaviour.
This fixes some failures for the following tests:
- shell32_apitest:ShellExecCmdLine: 12 failures less,
- shell32_apitest:ShellExecuteEx: 5 failures less,
- shell32_winetest:shlexec: crash fixed, now 13 failures as before,
- wshom_winetest:wshom: crash fixed, now 2 failures less too (0 failures).
I've also tested: the problem which was intended to be fixed by the guilty commit (CORE-19953) still remains fixed after this change.
CORE-19964
Useful for debugging.
Motivation: With SMP on x64 I found a number of instances where critical sections would be left abandoned, causing lockups. From what I can tell it was exceptions inside rpcrt4, which leave the process in a blocked state. Might or might not be related to x64 / SMP.
For real value, you still need to put checks at certain places manually, but this is not super straight forward, because there can be false positives, e.g. when a process is terminated due to an exception, where the abandoned lock is acceptable, and we have this during testing. It's difficult to 100% distinguish this from silent and very bad lock leaks.
Problematic code:
__try
{
SomeFunction(); // throws an exception with a CS held, e.g. heap code
}
__except(1)
{
DPRINT1("Oops. let's just pretend it's all ok!\n");
}
Implemementing missing features...
JIRA issue: CORE-19278
- Add netapi32 and secur32 delay importing.
- Move function definition from stubs.cpp into utils.cpp.
- Include some security headers in utils.cpp.
- Adapt <secext.h> to C++.
- Add prototype to <undocshell.h>.
CORE-18304
The included Telnet client does not support displaying messages with Unicode characters in them.
This is a problem, because even though localisation for the program was made for ReactOS,
it doesn't work properly.
- Make the `printm` function load and format messages using wide character APIs instead of the narrow ones.
- Add format specifiers to the resource files (this is necessary, as there are a lot of places, where narrow strings
are used in the program, and passed as parameters to `printm`).
Improvements based on recent Romanian translation document revision 06e89b2.
This file was not translated in Romanian language in any Windows version (neither XP/2k3+, nor in the previous ones).
I tried to translate this file as close as possible in the way I did in the previous PRs.
i.e. fix build.
When these get synced with more recent Wine version, you can remove
this define once you get past a "Enable compilation with long types"
Wine commit or similar.
It is not wishable anymore to automatically define __ROS_LONG64__
whenever __WINESRC__ is defined. Indeed, Wine now has started to
introduce the possibility to "Enable compilation with long types".
Thus, for these modules we import from them, we want to be able to
define __WINESRC__ without __ROS_LONG64__ automatically defined.
Addendum to commits 89c3520c86 (r73383) and 75eeb2a7e4 (r38872).
This is because GCC will generate errors for both const_cast and static_cast depending on the template parameter:
- With const_cast: error: invalid 'const_cast' from type 'std::nullptr_t' to type 'const wchar_t**'
- With static_cast: error: invalid 'static_cast' from type 'wchar_t** const' to type 'const wchar_t**'
On GCC the code using extended ISA cannot be inlined and must either be marked with a function attribute or compiled with the proper target options ('-mavx2' on the command line or '#pragma GCC target("avx2")' inside the code)
This is used with Clang, which does have native SEH, but it's broken and can cause the compiler to crash. Previously some code was not handling this and instead used native SEH for clang. Fix this by always using _SEH2_* macros instead of relying on __USE_PSEH2__ to be defined.
Improve consistency of code management.
JIRA issue: CORE-19278
- Move SHOpenPropSheetA from
utils.cpp into propsheet.cpp that
contains SHOpenPropSheetW.
PAGE_ROUND_DOWN macro seems to not work correctly with LONGLONG values. It creates some random freezes in the 1st-stage setup after commit 69bf140506.
It's fixed by creating PAGE_ROUND_UP_64 and PAGE_ROUND_DOWN_64 macros for 64-bit only data types.
---------
Co-authored-by: Thamatip Chitpong <thamatip.chitpong@reactos.org>
This is used with Clang, which does have native SEH, but it's broken and can cause the compiler to crash. Previously some code was not handling this and instead used native SEH for clang. Fix this by always using _SEH2_* macros instead of relying on __USE_PSEH2__ to be defined.
Try to improve things
For some unknow reason some intrinsics fail to get inlined. Using extern inline results in a linker error. Change it to static inline, so that there is a static implementation in case it doesn't get inlined
#pragma function(llabs) causes an error: "error: no_builtin attribute has no effect on defaulted or deleted functions"
This is probably a bug in clang, see https://github.com/llvm/llvm-project/issues/116256
- Declare CMBATT_DISCHARGE_TIME and CMBATT_CAPACITY_BOGUS constructs
- Determine if the battery was already discharging and if not, update the time when it's being discharged
- Fix the condition where it checks if the battery has been discharging for quite some time
- Default the time to BATTERY_UNKNOWN_TIME if querying the estimated battery time request fails or if the battery has just started discharging not over 15 seconds
CORE-18969
CORE-19452
Addendum to commit dbc7eeb47e (PR #4303).
The argument to get_temp_buffer() should specify the length of the
string being buffered + 1 (for the NUL-terminator).
The original code wrongly interverted this with specifying the buffer
shifted by one character.
Get rid from bogus SearchPathW() call, which is marked as most likely not needed in the comment above (by Wine). Simply get a length of the file name and use the file name directly instead, with checking for its validity too. Similarly as it's done for other cases.
That call seems actually not needed because it is already done using SearchPathW() in another parts of the code in this file, before calling SHELL_ArgifyW().
Fixes another heap corruption when trying to login via OAuth menthod in SpotifyXP 2.0.3 Beta (nightly build). The previous commit did not fix the bug fully, as I discovered it later.
CORE-19953
Windows SDKs define this constant to 0xFFFFFFFF but we define it to 0x80000000.
As a result, when our COMPBATT driver is being tested on Windows (namely XP, Vista and 7), BATTERY_UNKNOWN_TIME is not interpreted as UNKNOWN TIME but entirely something else.
CORE-18969
CORE-19452
IoInitializeRemoveLock expects an allocation tag to be provided when it allocates debug data in the kernel.
Passing 0 leads to a bunch of ASSERTs in the kernel as such data is allocated by ExAllocatePoolWithTag of which a tag has to be supplied, it's not optional.
- Introduce some new constructs
- Annotate the function prototypes with SAL2
- Re-structure & remove some useless fields in COMPBATT_DEVICE_EXTENSION and COMPBATT_BATTERY_DATA
Because SHOpenPropSheetW() is modal, there is no way for us to keep COM
alive on the original thread until the dialog completes, so a cloned
data object is used instead so that the property sheet handlers may access
the object even after ShellExecute() has returned (this is only relevant
for callers like Taskmgr that does not initialize COM even though MSDN
says they should).
Addendum to afc130ff3f (PR #7571). CORE-19933
- Fix typos and improve Portuguese (pt-PT) translation.
- Add missing accel keys and fix accel collisions.
- Improve Portuguese (pt-PT) translation. Fix text box width to fit all text.
- PartMgrAddDevice(): If IoAttachDeviceToDeviceStack() fails, bail out
immediately, instead of continuing initializing the device extension
then deciding to fail.
- PartitionCreateDevice(): Initialize the fields pertaining to parent
device linking in the partition device extension, before the other fields
(following in a similar way what's done in PartMgrAddDevice).
If an out of range dialog box number was given in a single comma syntax
for Control_RunDLL(), it should be set to 0 to launch the default dialog
box instead of failing.
Addendum to dcf9eb060a. CORE-19580 CORE-8981
_BIX is basically _BIF but with more information added, such as cycle count, measurement capacity accuracy and whatnot.
Starting with ACPI 4.0 _BIF is rendered obsolete and as a matter of fact a lot of modern hardware fill their ACPI machine data to _BIX.
ReactOS must go forward and beyond, compatibility with _BIF is kept. NOTE that a machine can ONLY support one battery static information method!
CORE-18969
CORE-19452
damage to your time machine warp core.
UNEXPECTED_NEW_YEAR_TIMESLIP
If this is the first time you have seen this Stop error screen,
restart your time machine. If this screen appears again, follow
these steps:
Check to make sure you wish the ReactOS Community a
🎊🍾🥳 *:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:* 🎆⚛️☢️
█ █ █▀█ █▀█ █▀█ █ █ ██████╗ ██████╗ ██████╗ ███████╗ ██╗
█▀█ █▀█ █▀▀ █▀▀ ▀█▀ ╚════██╗██╔═████╗╚════██╗██╔════╝ ██║
▀ ▀ ▀ ▀ ▀ ▀ ▀ █████╔╝██║██╔██║ █████╔╝╚█████╗ ██║
█▄ █ █▀▀ █ █ █ █ █ █▀▀ █▀█ █▀█ ██╔═══╝ ████╔╝██║██╔═══╝ ╚═══██╗ ╚═╝
█▀██ █▀▀ █ █ █ ▀█▀ █▀▀ █▀█ ██▀ ███████╗╚██████╔╝███████╗██████╔╝ ██╗
▀ ▀ ▀▀▀ ▀▀▀ ▀ ▀▀▀ ▀ ▀ ▀ ▀ ╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝
🎆⚛️☢️ *:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:* 🎊🍾🥳
Also, ensure you use the latest nightly ReactOS version and run it
attached to a debugger.
If problems continue, Keep Calm And Carry On Developing. Test your
code more thoroughly, use a sane compiler and debugger, or ask any
questions on ReactOS' official Mattermost channel.
Technical information:
*** STOP: 0x42000042 (0x67747770,0x000007E9,0x00000001,0x00000001)
*** jira.reactos.org - Address chat.reactos.org Base at reactos.org
*** github.com/reactos - Address git.reactos.org Base at reactos.org
- Update the page title and subtitle.
- Embolden the types of installation.
- Introduce title and subtitle for the upgrade/repair page
(not translated yet).
- Rewrite the introductory text.
- Add a temporary (ReactOS-Alpha) informational message.
- Hide the "Back" button when the Welcome page is active, and
show it back again when switching to the following ones.
Commit 325d74c30f (PR #7437) introduced a side effect that made impossible
to expand a folder when it contained both a ZIP file and subfolders.
Fix this by ignoring the return value of BrFolder_InsertItem and free the
pidlTemp pointer explicitly in all cases.
CORE-19955 CORE-19751
https://gitlab.winehq.org/wine/wine/-/blob/wine-10.0-rc3/dlls/shell32/shlexec.c?ref_type=tags#L6310bad544aab
Import new path handling code from Wine 10.0-rc3. It uses PathResolveW(), which was hacked in ReactOS for a long time but has been implemented properly starting from 0.4.15-dev. So now it should work correctly, and we don't need to use SearchPathW() anymore.
This fixes a heap corruption from shell32.dll when launching SpotifyXP 2.0.3 Beta and trying to login with Spotify credentials via OAuth login method. Also it fixes the same heap corruption when pressing Update button in CCleaner 5.39.6399.
CORE-14670, CORE-19953
Pressing Shift-F10 to open cmd.exe when the setup program runs from
a different current directory than System32, now works correctly.
Use the 2nd CreateProcessW() `lpCommandLine` parameter, instead of the
1st parameter `lpApplicationName`, so as to use default path search.
The command-line buffer given to the 2nd-parameter can be temporarily
modified by CreateProcessW(), thus use an on-stack buffer.
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw#parameters
Fixes build error:
../src/dll/win32/shlwapi/ordinal.c:5417:63: error: passing argument 3 of 'StrToIntExW' from incompatible pointer type [-Werror=incompatible-pointer-types]
if (!StrToIntExW(V_BSTR(&vargTemp), STIF_SUPPORT_HEX, &V_I4(&variTemp)))
In file included from ../src/dll/win32/shlwapi/ordinal.c:45:
../src/sdk/include/psdk/shlwapi.h:1682:52: note: expected 'int *' but argument is of type 'LONG *' {aka 'long int *'}
BOOL WINAPI StrToIntExW(_In_ LPCWSTR, DWORD, _Out_ int*);
^~~~
PropSheet_SetCurSelByID() was badly called in response of PSN_WIZBACK or
PSN_WIZNEXT notifications. See the reference on these notification codes:
https://learn.microsoft.com/en-us/windows/win32/controls/psn-wizback
> Returns 0 to allow the wizard to go to the previous page. Returns -1 to
> prevent the wizard from changing pages. To display a particular page,
> return its dialog resource identifier.
> (...)
> To set the return value, the dialog box procedure for the page must call
> the SetWindowLong function with the DWL_MSGRESULT value and return TRUE.
This bug sometimes causes the wrong page to appear (e.g. "Previous" in
IDD_NODRIVER should come back in IDD_CHSOURCE, but goes to IDD_WELCOME).
They are redundant when these are already present in the given module's
root resource file, from which the language-specific resource files are
being included.
- A caller of LsaRegisterLogonProcess is a trusted caller if the calling process has got the Tcb privilege, otherwise it is an untrusted caller.
- A caller of LsaConnectUntrusted is always an untrusted caller.
- A caller of LsapOpenLsaPort is always a trusted caller.
Fixes clang build, since ubuntu-latest (24.04.1 LTS / Noble Numbat) has no
LLVM 13 package available:
```
Ign:6 https://apt.llvm.org/noble llvm-toolchain-noble-13 InRelease
Err:9 https://apt.llvm.org/noble llvm-toolchain-noble-13 Release
404 Not Found [IP: 151.101.46.49 443]
Reading package lists...
E: The repository 'http://apt.llvm.org/noble llvm-toolchain-noble-13 Release' does not have a Release file.
Error: Process completed with exit code 100.
```
* [SHELL32] Use FS compatible PIDL format for Recycle Bin items
This allows SHChangeNotify to handle these items and DefView will correctly update the recycle folder.
CORE-18005 CORE-19239 CORE-13950 CORE-18435 CORE-18436 CORE-18437
Add support for configuring the CM lazy-flush and delay-close variables:
`CmpLazyFlushIntervalInSeconds`, `CmpLazyFlushHiveCount`,
and `CmpDelayedCloseSize`,
using REG_DWORD values named respectively:
`RegistryLazyFlushInterval`, `RegistryLazyFlushHiveCount`,
and `DelayCloseSize`,
in the registry key
`HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager` .
Extra observations:
- While delay-close support exists in Windows 2003, configuring
the delay-close size is possible only in Windows Vista and later.
- The possibility of configuring the lazy-flush hive count has been
removed in Windows 8+.
See the comparison tables at:
https://redplait.blogspot.com/2011/07/cmcontrolvector.htmlhttps://redplait.blogspot.com/2012/06/cmcontrolvector-for-w8.htmlhttps://redplait.blogspot.com/2016/03/cmcontrolvector-from-windows-10-build.html
In addition:
Remove `CmpDelayedCloseIndex` from cm.h as it is not used anymore in our code.
We do have IDS_PWR_HOURS_REMAINING and IDS_PWR_MINUTES_REMAINING string resources but they're never used programmatically.
Display the estimated battery time ONLY if the returned time is not unknown.
CORE-18969
CORE-19452
BatteryClassStatusNotify is used by battery miniport drivers to notify the Battery Class of a status change. This can either be a battery status change or battery tag assignation, depending on what the device extension (namely the composite battery) waits for.
We do have implementation for EVENT_BATTERY_STATUS but not for EVENT_BATTERY_TAG. What happens is when BatteryClassIoctl fails to query the battery tag because it has not yet been assigned, the thread is stuck on waiting for the event object to be signaled, forever.
This tipically happens when a timeout of -1 (meaning the calling thread must wait indefinitely) is supplied. The composite battery driver (COMPBATT) is responsible to signal the Battery Class when a CM (Control Method) ACPI battery receives a tag, which then this function will signal the event.
CORE-18969
CORE-19452
ReactOS (like any other OSes) expects power data to be represented in milliwatts per hour, not in milliamps per hour.
Currently CMBATT defaults the stats to unknown values, if that's the case, and there are a bunch of machines that do report their data from _BIF ACPI method in ampere.
CORE-18969
CORE-19452
KeWaitForSingleObject takes 100ns unit for timeout. Both IOCTL_BATTERY_QUERY_TAG and IOCTL_BATTERY_QUERY_STATUS take a wait for the timeout in milliseconds.
Supposedly a miniport driver wants to supply a wait of 5000 ms (which is equivalent to 5 s), the miniport driver WON'T BE WAITING 5 seconds but 0.5!!!
CORE-18969
CORE-19452
This is a temporary helper for the system call entry point to store the user mode stack, before switching to the kernel mode stack. Initially it was copied to the trap frame inside KiSystemCallHandler. This has been moved to the system call entry point, but some remnants remained. The problem is that KiSystemCallHandler can be called twice in a system call (when the call is the first GUI call and the stack needs to be extended). In that scenario, when the thread was preempted, a new value could be saved in the PCR before running KiSystemCallHandler again, and then overwriting the proper value with a bogus one from a different thread. This rarely seemed to happen on UP, but happens a lot with SMP.
Addendum to 0.4.16-dev-323-g c212c184f3 (#7352).
In the usage help message one line started with '\pentru', but it should have been '\tpentru'.
Fixes GCC compiler error:
base/applications/mscutils/eventvwr/lang/ro-RO.rc:177: unrecognized escape sequence
Co-authored-by: George Bișoc <george.bisoc@reactos.org>
Its support is controlled with a REG_DWORD value named
`VolatileBoot` inside the registry key
`HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager` .
Its implementation is very trivial: when enabled, CmpShareSystemHives
is set to TRUE and doesn't change state during runtime.
In a sense this is similar to what happens in WinPE-boot, except that
ALL hives without exception (system hives and others) will be loaded
in shared mode.
This is controlled with a REG_DWORD value named
`SelfHealingEnabled` inside the registry key
`HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager` .
The `CmSelfHeal` variable is used to retrieve the data,
hence it needs to be a ULONG.
The REG_DWORD value `AutoReboot` stored in the registry key
`HKLM\SYSTEM\CurrentControlSet\Control\CrashControl`
(used as a boolean value), controls whether to automatically reboot
the operating system at the end of the crash dump, after a bugcheck.
ReactOS doesn't currently implement crash dumps, so only the auto-reboot
is done. (The reason of the apparent redundant `Reboot` variable in
KeBugCheckWithTf() is because that variable would be updated on return
by the not-yet-existing crash-dump helper routines called from there.)
- Directly call KdpGetMemorySizeInMBs() within KdpPrintBanner(),
instead of having the caller doing it.
- Use the miarm.h MiIsMemoryTypeInvisible() helper.
- Add Doxygen comments.
- Move local variables to the code blocks where they are used.
- if-s one-line bodies on their own lines.
- Massage the boot-images symbols loading, using a for-loop.
PeLdrCheckForLoadedDll():
- Use a for-loop to iterate over the linked list.
- Adjust few comments.
- Use SAL2 annotations.
PeLdrpCompareDllName():
- Make its input paramters const.
- Use SAL2 annotations.
See https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-rtlqueryregistryvalues
The RTL_REGISTRY_OPTIONAL applies to the first parameter of the
RtlQueryRegistryValues() function, not to the Flags member of the
table entries. However, a RTL_QUERY_REGISTRY_REQUIRED flag exists
to mark values whose existence is NOT optional.
Problematic usage was introduced in the following modules:
drivers/input/i8042prt: Commit e7e959fb0 (r30000)
drivers/input/kbdclass: Commit 5a77f871d (r18911)
drivers/input/mouclass: Commit aeeab7d1f (r18906)
drivers/input/sermouse: Commit 3f348259c (r19100)
rosapps/drivers/green : Commit c8a90f769 (r21165)
Override DbgPrint(), used by the debugger banner DPRINTs,
because KdInitSystem() can be called under the debugger lock
by KdEnableDebugger(WithLock)().
In this case, when DbgPrint() (re-)enters the debugger via an
interrupt and acquires the debugger lock, a deadlock occurs.
- The debugging banner helpers *CANNOT* be in the INIT section, because
it is possible for KdInitSystem() to enable the debugger **MUCH LATER**
after boot time. (Reverts part of commit f239ca0f0 (r72922).)
This can happen in two situations:
* When the debugger is in CRASHDEBUG mode, i.e. initialized at boot
time but not immediately enabled, and a BSOD happens later that
enables the debugger with a `KdInitSystem(0, NULL)` call.
* When the debugger was possibly manually disabled with a
KdDisableDebugger() call, then later re-enabled with a
KdEnableDebugger() call.
- In the same cases as described above, the KeLoaderBlock is freed after
boot time. Thus, KdpGetMemorySizeInMBs() cannot use it and enumerate
the MemoryDescriptors to evaluate the number of physical memory pages
available on the system. Instead, we can use what the memory manager
has already computed, since the latter is already initialized by now.
These two fixes avoid (invisible) crashes when (re-)enabling
the debugger at non-boot run time.
I.e. when LoaderBlock != NULL and we have loaded the initial hal and
ntoskrnl symbols. KdBreakAfterSymbolLoad is then checked for when the
other boot symbols have been loaded by ex/init.c!ExpLoadBootSymbols(),
invoked by ExpInitializeExecutive().
Use the PE import table's OriginalFirstThunk array when scanning and
resolving imports during DLL binding.
It points to an array of pointer-sized IMAGE_THUNK_DATA structures
which describe the functions being imported. On the other hand, the
FirstThunk points to an array of pointers, whose initial values are
a copy of those pointed to by OriginalFirstThunk, but are replaced
by the actual function pointers determined at runtime, when a DLL
is loaded (see PeLdrpBindImportName() function).
If we were to use the FirstThunk array to find again later the imports
by name or ordinal, we would fail because these are replaced by the
addresses of the corresponding functions.
This fixes loading kdcom.dll from Windows XP x64 with FreeLDR when
testing on ReactOS x64.
```diff
(freeldr\freeldr\lib\peloader.c:498) trace: PeLdrpScanImportAddressTable() ---- Calling PeLdrpBindImportName() in a loop
(freeldr\freeldr\lib\peloader.c:501) trace: *** ThunkName->u1.AddressOfData = 00000000000070F0
(freeldr\freeldr\lib\peloader.c:502) trace: *** ThunkData->u1.AddressOfData = 0000000000573780
(freeldr\freeldr\lib\peloader.c:209) trace: !!! ExportDirectory->NumberOfNames 1504
-(freeldr\freeldr\lib\peloader.c:210) trace: !!! ImportHint 0 - ExportName 'CcCanIWrite' - ImportDataName ''
+(freeldr\freeldr\lib\peloader.c:210) trace: !!! ImportHint 282 - ExportName 'HalPrivateDispatchTable' - ImportDataName 'HalPrivateDispatchTable'
....
-(freeldr\freeldr\lib\peloader.c:268) err: Did not find export ''!
-(freeldr\freeldr\lib\peloader.c:709) err: PeLdrpScanImportAddressTable() failed: ImportName = 'ntoskrnl.exe', DirectoryPath = 'multi(0)disk(0)rdisk(0)partition(2)\ReactOS\system32\'
```
('-': lines before the fix; '+': lines after the fix)
Code has been adapted based from the following functions:
ntdll/ldr/ldrpe.c!LdrpSnapThunk() and LdrpSnapIAT()
ntoskrnl/mm/ARM3/sysldr.c!MiSnapThunk() and MiResolveImageReferences()
References:
https://devblogs.microsoft.com/oldnewthing/20231129-00/?p=109077https://devblogs.microsoft.com/oldnewthing/20231130-00/?p=109084https://stackoverflow.com/questions/42413937/why-pe-need-original-first-thunkoft
CORE-13525
Notes:
- Most of the exported functions have been turned from default cdecl to explicit stdcall / "NTAPI".
- The two InitializeSetup() phases have been collapsed to make the initialization simpler.
Average reductions (percentages; see PR #7523 for actual numbers):
x86 Debug builds:
reactos.exe: 35.1%
smss.exe : 39.8%
Total (including setuplib.dll): 17.9%
x86 Release builds:
reactos.exe: 22.3%
smss.exe : 25.0%
Total (including setuplib.dll): 10.6%
x64 Debug builds:
reactos.exe: 40.6%
smss.exe : 41.6%
Total (including setuplib.dll): 20.0%
x64 Release builds:
reactos.exe: 22.8%
smss.exe : 22.3%
Total (including setuplib.dll): 10.1%
Use name from public Windows SDK for 'Network Connections' CLSID, available since Windows SDK 6.0A (Visual Studio 2008 or higher).
Replace all such instances in netshell, shell32, apitests/com.
- Partially reverts/refactors commit bea0b47
- Follow-up to PR #7266
Improves detection of Explorer being the default shell.
- Check the "Software\Microsoft\Windows NT\CurrentVersion\Winlogon" key to see if Explorer is the default shell.
- Use this check to determine whether to start the desktop and taskbar or only open a file browser window.
JIRA issue CORE-19887
- Implement SHOpenPropSheetW.
- Reuse already opened propertysheets and format dialogs by finding the existing unique stub window.
- Default .lnk property dialog to the shortcut tab.
* [WINESYNC] msvcrt: Respect allocation mode in malloc.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 70ac780e6ed26380fd2fcdfbb96352ca8548bc79 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _callnewh in operator new implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 7e9cba139d30d3b48567baaf6a8b901143c738e7 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Reimplement _set_new_mode function.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6113a251ef3955f2ac3436d90a523faf4c03bc0a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] ucrtbase: Change ptd fields offsets to match with native.
Makes it possible to use native vcruntime140_1.dll.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 9b94e4c80580325e62097ed6c08cc37c28575470 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use __ASM_BLOCK_BEGIN and __ASM_BLOCK_END macros.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 3f8ac955de59da9f81a17ccf9d20c7402d6b1773 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] msvcrt: Use __ASM_USE_THISCALL_WRAPPER macro.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 95e117b3dcd604b544b816c230a4ee8252f0f2f9 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] msvcrt: Use internal sprintf implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id bfa1e3ef8f592d74f1dfcc89ba940946ad327591 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Print assertion failure messages to stderr.
This matches Windows behaviour. In particular, redirecting stderr with freopen()
followed by assert(0) will print the failure message to the relevant file.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 3533605293e8083dae19c5fbd41e2077faf5adc6 by Zebediah Figura <z.figura12@gmail.com>
* [WINESYNC] msvcrt: Don't use strncmpW in msvcrt_get_flags.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c6f19b121e74935689eb9666d0d21729a713c2ad by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _wcsnicmp instead of strnicmpW.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 54b2a10659871032720df31ae9ca6cba2ff4acf0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use tolowerW in _tolower_l.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 0b35b779151d766f6741bc32d3b6d3c8d81f1cc4 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use tolowerW.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id bc47bff4a888872363005da93fe0b714493c835b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use toupperW.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a81f55093e11a12c25938dada2e3d7f0c8dfe86c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcalnum_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 19c05e60a3cbb7dfa040b919e8783d571fc6ae01 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcdigit_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id fd74aeb726e65c62a9e110bdbf282549cb8afce0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcgraph_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 71cd3d5e8ce831abe5f601671b307ecff8692f01 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcalpha_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 5f294e34d6eab6a217991994443c347aa44684b7 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbclower_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1ad209428442e5c571b8a8478c3821e6c303b3a9 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcupper_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 95b3ff9f74ada220295128ceee34a8e191b93baa by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcprint_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1750a6969becfb02f0fee9447878d4374db652ab by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add _ismbcpunct_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 986aa52fc41e1cf022cc72a0f40996937bb567dc by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use get_char_typeW in _iswctype_l.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 068a419e4219c5bb5d8156ff9177676d9c174021 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Copy wcscat implementation from ntdll.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2c5bf68a5e7525ae9c50ee0dfc6d819da79c4861 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use wine/unicode.h header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 536be09b8449537925ad4635a06ae45283075c2e by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Introduce fpnum structure that can be used to represent 64 and 80-bit double.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 450015781e7ad45a79df01225ee75271563317ce by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Don't use strtold in __STRINGTOLD_L.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a22adf1893d510660d7eeea5ef290399ce21e8b5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] ucrtbase: Support _CRT_INTERNAL_PRINTF_STANDARD_ROUNDING flag in printf.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 25cc6ff62d22220f6da742fa47a7f5fe80ed0c1b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Handle rethrowing from nested try blocks on x64.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f65fb09dff86dbb87564264481a23b1179e8d890 by Paul Gofman <pgofman@codeweavers.com>
* [WINESYNC] msvcr120: Add imaxabs.
Signed-off-by: Myah Caron <qsniyg@protonmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1bb193238fa9eb73668b1dd1bb086105af25727c by Myah Caron <qsniyg@protonmail.com>
* [WINESYNC] msvcrt: Fix count parameter type in printf functions family.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 68ca61a555b3118836dbf7b666686e1de3d988b0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Implement _mbbtype_l().
Fixes Midnight Castle Succubus.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id ebe3fe536c6c0eb8d8144e9235ea8d1f88aa5657 by Paul Gofman <pgofman@codeweavers.com>
* [WINESYNC] msvcrt: Terminate on noexcept function trying to propagate exception (i386).
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 26c1f8fb07790f51c0fbe0012144e213edccd8ed by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Terminate on noexcept function trying to propagate exception (x86_64).
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 8468a3ed77ba22d9a33b2251240e2a4e5462e1b7 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Make locale and thread helper functions CDECL.
This prevent callers from having to save SSE registers to the stack.
It is for instance the case in MSVCRT__towlower_l, which is called on
every character by MSVCRT__wcsicmp_l.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a24ad51e3f2515c1970b56f8dfe2206e2b282dc9 by Rémi Bernon <rbernon@codeweavers.com>
* [WINESYNC] msvcrt: Introduce noalloc current locale lookup helpers.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id faf92fdedb16a6e35c556e389bf5ac7241058f75 by Rémi Bernon <rbernon@codeweavers.com>
* [WINESYNC] msvcrt: Add floating point classification macros.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id b9002cc8c7ae16b4a61476834318bcefd638e34f by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Use the msvcrt math functions internally.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1be5e83859229d0e8a6c4fb3913865beea00a085 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Use the msvcrt ctype functions internally.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id b7fe06d0fa6dbad7d2c3ae380557adcaa10b89f8 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Use the msvcrt atoi() function internally.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f48648aeec69f74899ba2f074b60aeb0de03615b by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Use the msvcrt string functions internally.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2fb08bed46fec302954578038566593bb108b57c by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Move math functions to a new Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c72e1b096d16a1e9a36b86fbc8c403ec3653a504 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Share ctype tables between threadlocinfo instances.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 5ec7cb5a7f20afd6eef33d5799fb4c5c1ddaebe1 by Chip Davis <cdavis@codeweavers.com>
* [WINESYNC] msvcrt: Share __lc_time_data between threadlocinfo instances.
My testing shows that unk[1] is some sort of refcount.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 898abfc18f409357939e66cd9a6767d4bc5b0672 by Chip Davis <cdavis@codeweavers.com>
* [WINESYNC] msvcrt: Enable multi-thread locking by default.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6482ce7666a5f8beb92879af5ae3fde3782627d7 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Build with msvcrt headers.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 191bdeaff3676f192148e17c6369865ec94c2ba2 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Don't overwrite threadmbcinfostruct structure in _setmbcp.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 35a8f15361022d9195bd141aa67b22e06007fa16 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt/tests: Remove the headers test.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 86b0a633c68dfceb884a74528c407ba359f10991 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Remove some duplicate definitions from msvcrt.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1f11f41f613264dd5b937d0df0a3ee746db0517c by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Move the fenv_t definition to the public header.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 34422eb56cad1ba799270bc6dd56f31bec86023a by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Use the public standard type definitions where possible in msvcrt.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 0edef50dfae4ec294a949654fa1e03700b954dcb by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Introduce flags field to describe locale stored in thread data.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4fc2b7293378be93275e316c3940e7d21b5bda09 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Lock _MB_CP_LOCK lock in setmbcp.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d5b2c3f233d2a7263f3b79133ce6216fa991c1f2 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_lconv type.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 70c06601e6bc44aa7b78f440b43c5accbcf32038 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_pthreadlocinfo type.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d5c0458bd17e1759d25a94038414bf5d4f84a828 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_pthreadmbcinfo type.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d496099c74ba7ce4d445a14dceb22b2de2ab0ec5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT__locale_t type.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 5114c85a0365d29f49c63ca967dfd2e9159c6338 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT prefix from locale functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 17f3f548861dc2c7502690b7d3183e3b9b8a5510 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_wchar_t type.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c302397c7375157ccca7de977d83c95f38015238 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use type ranges definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 758460faf7080efaadfe92a221ad6c623f561be9 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use simple type definitions from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id fa272adaeb9df503a8fe04d503e07a41ae0c32a0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use WEOF from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 7acfe8fb73d88c354dcec0f56c3cdc6acacbdc04 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use EOF from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 8180f4001a6d5a0befe6dfb4c0c3118853b7a413 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use struct tm from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6c4b7758c691fad6fd5b5f629a8a01b6bc2f961a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from cpp.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 772f0331aa1c4e24f97ca5c5ae27a65805cea8d9 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _beginthread_start_routine_t from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id fbc9110d232fd5e86113fc73153b754278e0f5e9 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use errno values from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1317b935efaa841e8842b848d422d1bf2471e448 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _onexit_table_t from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id babe6ceb7f7b206ce8181e35934fc0aa1ee02ae5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use printf and scanf flags from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id eb6f79f96a81371d328476d255e27d3a47925b13 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _CRT_FLOAT and _CRT_DBL from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 811647dff44ab93b89200d873d7707a02331d89a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _exception definiotion from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 595ee43c48dc75ebc03900b027d000ebd15dffd4 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use locale category definiotion from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e9a1ff11302bbcbb3db68fa4bbd827a7958067ca by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from errno.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id eeada5682b68ae2400271dbda0634be186f962b7 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from heap.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d784dbb89993d0565ea132109b110cc9500c97f4 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use FILE from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 926179938308b49a2ede5e9196d28535cfec782c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use __utimbuf{32,64} from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2d471db92f0df5d0682369651c0cbb94312cc988 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use ctype definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id eabef91a9701ac72c91e64d946d31d829da92d3a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use status word flags from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 09d018c73d4dbaeddf19333e9c5c6fae51d4c1ec by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use fpclass constants from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 480e25a5f6ae432f4688c79dbf7f0008a740aab6 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _ARGMAX from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 45ac13551966f7a89ad4678fbc0f76f858663bcb by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use floating point exception signals definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 9e085387ac8e6a6c34bc6e7bec8135ef84a247d6 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use signal definitions from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2d96d03006798dd64d42735ffbc3dc76fe6a1174 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use fpclassify constants from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d571f377e40082bf234c5b2e3b128598a370ae6b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use FPU control word definitions from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4674860303badca0b88436fdc9c7d5be4f00b1b8 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from ctype.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 176aebb0c568e75043012fb0e6d61d6862323993 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from data.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 495f24ebb82af9864287f9cbc39aa4db108979d2 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use heap structures and definitions from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6d799bfa06a818b068bec6ce540477f89d4f63e1 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use stdio.h definitions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 0d479b9d8c54184cce9678b3095bf01d5b4a473c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from environ.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 9011b0b7c05c481ff043357be655f1fc7e66b924 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from except.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6bd9ea5be9c1e53d2cf7369c5eb75817b3c80df5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from exit.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2c35caa7671ec4fbf90651e3301cfc58c011031c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from mbcs.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 065cf4e71496d96baf5f7ff35af4f0bbfee9d1a8 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from misc.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 0364b7681fd6f628b06a9653119cd4f7d1c5cfdb by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from process.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f10c1118e2c2159140d32730f2e49ec70f37bd33 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from scanf.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a1662e3f7d6626618dc0158627ffbe8cf2c81be0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from string.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1514c54ce560acadb4cacb77cd4ee5915e8dbd67 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from wcs.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6ad42ee7f4df2a3a731e404f090abe383d40dd1c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from math.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4f2f3545e59c00aac92448aebe7484467a8cedce by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from dir.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 41fa6e4b6f0e64bfe8be35c215a3c01d8290700c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove MSVCRT_ prefix from file.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1913affb7b4ee57740a0322e6962d588ae62aca0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _invalid_parameter_handler from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 264ba46bcdcd2119c2f9712ba52bb74c35bd369b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _purecall_handler from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 200fe8ac42ff0800c784ec686ccf494391f6907b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _Dcomplex definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 494a78940735ab31bef9a8ae1d5e58175667df37 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _JUMP_BUFFER from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 835a83e3f9699a83482bc5e74d2e931d87cb1a5a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _finddata_t definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 8a2dc3aa42551da56dfc3fb9f1b3979c032a9738 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _stat64 definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 951968c88a2a705ebe7bbb1ac02cd64f8f899f5b by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove non-needed defines from msvcrt.h.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f67f1ce79ee98f88aedde3a915bb6d85b9a934ab by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Remove non-needed function declarations from msvcrt.h.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 79e950bb7989809f62573e3209f2cb1bc0852d6e by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use _configthreadlocale arguments definition from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a7b9948f396a904b43851105f14e86455ebae703 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] ucrtbase: Improve __intrinsic_abnormal_termination stub.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e734d729461855a5ddaf81f4e08e0cc2b3286e37 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] msvcrt: Use __ASM_USE_THISCALL_WRAPPER in cxx.h.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id df446b9c21f52b917a9c2a360bccaed35896a32e by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] msvcrt: Improve memmove performance on i386 and x86_64 architectures.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49663
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 38c490496000c5852f14e9c022868c5107d9ff03 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Make __lc_time_data more similar to native.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 859261f4809a47fd030b605a6e418b7ac52f0790 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Lazily initialize console handles.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d5ab1401c0988b8c8c14ae7c64da0a55f4e4bbeb by Rémi Bernon <rbernon@codeweavers.com>
* [WINESYNC] msvcrt: Add helpers for creating base class RTTI.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 16f6a567f4c259bc9b856558f4deebd2f4aeb88c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Fix _unDName crash when demangling class function pointer.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 7a1e7cbeee94756f3c474ba63b9fe9db8bddde3a by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] include: Disallow wcsncpy() in Wine, similarly to strncpy().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id b35404aa61bf9d5c95ba9b51adb57df7cec1827b by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Make UCRT _beginthread[ex]() hold the DLL reference.
MSVCRT's _beginthread[ex]() doesn't exhibit the same behavior and using
ThreadExit() does leak the reference.
FreeLibraryAndExit() has to be used because the DLL may be the only user
of the given CRT.
This fixes Baldur's Gate 3 crashing shortly after launch.
Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 7435ca85453079283da43d716fac48aa1bf5ca3f by Arkadiusz Hiler <ahiler@codeweavers.com>
* [WINESYNC] msvcrt: Allow specifying destructor in DEFINE_CXX_DATA macro.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id bc05707364d722c7b8c105709962cb78c0469cd4 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Add macro that defines type_info vtable.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6c4cddc4f6324cfd6d37e269aaec111a8a665e22 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Rename scheduler.c file to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id eff57ac9c6280751f5f51a66fcac05d6f842fecb by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move _Trace_ppl_function to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id ce5c989171f458842bee6e168a65dc36d2ec61d5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Rename exception::what() implementation to exception_what.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f1fa214b9f936bd91fecbfd6f05436d22311f4dd by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Introduce macro for creating exception class.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f6f8b30c47bc28be5df692743fcf81c7952153ce by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move improper_lock implementation to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id ef81cfb5fbc6d8f2b892c2782bdd469a5bb2f526 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move scheduler_resource_allocation_error to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a8decf5c1511019e3cb22a0e4db06cb0e6b121b2 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move invalid_scheduler_policy_key to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 635f59f2765c03a91b589b810a898bb0b0e566e5 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move invalid_scheduler_policy_value to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id a7bbdea08994625411c94da97ef6b5fbcfb5aaf6 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move invalid_scheduler_policy_thread_specification to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c9189a411b7941377cb414eed15d1ce02d43959c by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move improper_scheduler_attach to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 9694fc11fee300134486ee359b525afe098748c8 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Move improper_scheduler_detach to concurrency.c.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 1c9a30f217ef0afcfeb86acf3911e51e81f49880 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Simplify throw_exception helper.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 5e3f959aed66b719d845e9e81b282210758444b0 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Fix _CxxThrowException prototype.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c306c527e708df33a67d31667be75adcbcbc7d7e by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] ntdll: Move some exception definitions to winternl.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 97479d3d32cd1adf1a77f74b19ecfd0560b78128 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] include: Use the standard va_list instead of __ms_va_list when building with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2a92c58e1152e1d80395cf31d7cd3f282d094540 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ucrtbase: Avoid bool optimization in __std_exception_copy.
Otherwise GCC changes do_free = 1 assignment to *dst = *src which breaks
ucrtbase/cpp tests.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 21da1f2f1143cfc154a8d46c51d4922ff71008d6 by Piotr Caban <piotr@codeweavers.com>
* [WINESYNC] msvcrt: Use the standard va_list instead of __ms_va_list.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d8ed47ec21b255976131c82e4c14653846765adb by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msvcrt: Don't set frame to 0 in arm and arm64 setjmp.
This matches what was done for x86_64 in
882980c17a9a033fa8e49a4c116af9583698d218.
Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6a072b98c100f38a61fad00b6c96c86b3445efac by Martin Storsjö <martin@martin.st>
* [WINESYNC] msvcrt: Do not acquire fd lock in msvcrt_create_io_inherit_block.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51647
Signed-off-by: Doug Lyons <douglyons@douglyons.com>
Signed-off-by: Thomas Faber <thomas.faber@reactos.org>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 5a514d3f45472ce1a169f33d14cdcfb07c51441e by Doug Lyons <douglyons@douglyons.com>
* [WINESYNC] msvcrt: Fix double-free and memory leak in type_info destructor.
Spotted by toying with the gcc's static analyzer.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 01111b941d469cb13ed9d3f63c2935930679bcb8 by Eric Pouech <eric.pouech@gmail.com>
* [WINESYNC]: crt is now in sync with wine-staging wine-7.0
---------
Co-authored-by: winesync <ros-dev@reactos.org>
Fixes previous attempt at commit 0ca4e6dcf, which was reverted by commit
bbdcc14b1 because the partitioning checks mistook unpartitioned disks as
GPT.
Addendum to commit 99f0937fd.
The partition-creation checks are unified for these partitions into one
single function. To prepare for GPT support, the specifics are put into
a separate MBRPartitionCreateChecks() helper, called for MBR disks by the
upper-level function. GPT disks will have a similar helper in the future.
Use section object pointer with byte offset instead of using base address. This simplifies the Mm functions themselves and also the code in Cc that calls them.
Also add minor fixes for MmFlushSegment and MmPurgeSegment.
Addendum to commmit 99f0937fd.
The partition-creation checks are unified for these partitions into one
single function. To prepare for GPT support, the specifics are put into
a separate MBRPartitionCreateChecks() helper, called for MBR disks by the
upper-level function. GPT disks will have a similar helper in the future.
This basically avoids re-entering the debugger (via the embedded breakpoint)
while we are already running within its context.
In addition, this allows the tests for Kd/NtSystemDebugControl
(see PRs #7424 and #7426) to run without having ReactOS to crash.
* Don't return before file object's resource is acquired in FsRtlAcquireFileExclusiveCommon, except some special return cases, when return is reuired. Based on hpoussin_filter_extra.patch by Herve Poussineau (hpoussin) with improved comment, which matches the actual behaviour now.
This is required by fltmgr.sys driver from Windows XP/Server 2003 to work correctly, so this change fixes asserts/exceptions when releasing the file via FsRtlReleaseFile after acquiring, when using 3rd party filter drivers from several antivirus programs (e. g., Avast Free Antivirus all versions, AVG Antivirus Free 18.8, Avira AntiVir Personal 8.2, Dr. Web Security Space 8.0, Kaspersky Antivirus 2012 etc. etc.).
CORE-14157, CORE-14635, CORE-19318
* Add braces around return
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
* Improve the comment (make it more detailed)
* Correct checks sequence
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Don't return before file object's resource is acquired in FsRtlAcquireFileExclusiveCommon, except some special return cases, when return is required. Based on hpoussin_filter_extra.patch by Herve Poussineau (@hpoussin) with improved comment, which matches the actual behaviour now.
This is required by fltmgr.sys driver from Windows XP/Server 2003 to work correctly, so this change fixes asserts/exceptions when releasing the file via FsRtlReleaseFile after acquiring, when using 3rd party filter drivers from several antivirus programs (e. g., Avast Free Antivirus all versions, AVG Antivirus Free 18.8, Avira AntiVir Personal 8.2, Dr. Web Security Space 8.0, Kaspersky Antivirus 2012 etc. etc.).
CORE-14157, CORE-14635, CORE-19318
MiGrabDataSection adds a refcount. There is a missing MmDereferenceSegment cleanup in case of range check error.
Fix that by moving MiGrabDataSection calling code to after range check.
Enable use of flags denoting state of Wi-Fi access point relative to the network adapter trying to connect to it. Used when working with WLAN_AVAILABLE_NETWORK.dwFlags to check whether we are connected to the network or not, for instance.
These flags have been introduced in Windows 10.
References:
- https://learn.microsoft.com/en-us/windows/win32/api/wlanapi/ns-wlanapi-wlan_available_network
- Windows SDK
CORE-6905
Rename the Ext2 recognizer to a more generic Ext to be more future-proof with a possible upcoming ext4 support.
Also, it already makes no sense to use the name ext2 as it already recognizes all the FS of the "Ext family".
In addition, add the Ext Recognizer for CDs.
* [NTOS:MM] Fix MmAllocateMappingAddress and MmFreeMappingAddress and their regression test failures.
Follow up of #7260.
This fixes kmtest:MmReservedMapping failures and hang.
Based on mm-implement-mappingaddress.patch by Thomas Faber and some changes by Oleg Dubinskiy.
kmtest:MmReservedMapping revisions and updates to Vista+ method by Timo Kreuzer.
Signed-off-by: Oleg Dubinskiy <oleg.dubinskij30@gmail.com>
Signed-off-by: Timo Kreuzer <timo.kreuzer@reactos.org>
CORE-10147, CORE-14635, CORE-17409, CORE-19318
- Fixes the case where an extension exists in HKCR but has no ProgId (half of CORE-19355)
- Fixes some cases where Wine hardcoded "File and "... file" strings are used instead of localized strings in SHGetFileInfo.
They were reversed, which meant to immediately complete the IRP
if conditions were NOT satisfied.
Remove a now useless/invalid call to QueryStatus, to return the
status which lead to IRP completion.
If a .lnk shortcut does not specify a working directory, it should use the directory provided by the InvokeCommand caller when it's launced.
CORE-19855
This structure replaced magic field in wine's ACTIVATION_CONTEXT with a new field MagicMarker in a wrapped structure, with the only difference being the field offset. This is pointless, because it's not used anywhere outside of this file. Also remove the related functions, that were never even used in the first place.
This allows to load an image as freeldr extension code.
TODO:
- Add global bootloader DTE list
- Add wrapper function that also processes imports
- Use this for scsiport
Implement MmAllocateMappingAddress and MmFreeMappingAddress routines.
Based on mm-implement-mappingaddress.patch by Thomas Faber with some changes from me.
Required by Microsoft NTFS driver (from Windows Server 2003 SP2 only, the one from Windows XP SP3 does not need them) and by NDIS & TDI drivers (both from Windows XP SP3 and Windows Server 2003 SP2). Also they are called when using Dr. Web Security Space 8 filter drivers together with MS FltMgr & TDI.
Fortunately, this part (these two routines) are enough to get the drivers working in both cases, and others (partially incomplete) routines are not badly required, so they can be finished and committed later.
CORE-10147, CORE-14635, CORE-17409, CORE-19318
These headers come with the MS compiler. Some of them are standard, like emmintrin.h, others are MS specific like crtdefs.h
This separation will allow using MS CRT headers. Eventually it can allow compiling with the compilers' runtime headers.
- no functional change intended
- shrinks the rc files sizes and shrinks the binary size of taskmgr:
RosBEWin2.2.2 GCC8.4.0dbg taskmgr.exe from 696.320 -> 678.912 bytes ==> 17.408 bytes saved in the binary
- does also slightly beautify those lines when displaying them in the reshacker
JIRA issue: none
Fix warnings:
E:\3rdRepo\ReactOS_Fork4\ntoskrnl\ex\keyedevt.c(458): warning C6387: 'Timeout' could be '0': this does not adhere to the specification for the function 'ExpWaitForKeyedEvent'.
E:\3rdRepo\ReactOS_Fork4\ntoskrnl\ex\keyedevt.c(527): warning C6387: 'Timeout' could be '0': this does not adhere to the specification for the function 'ExpReleaseKeyedEvent'.
JIRA issue: None.
Proposed changes
Timeout parameter of those two functions should be optional.
Instead link to cpprt. This fixes build with GCC 13, which generates symbols that conflict with __cxa_pure_virtual, if there is a pure virtual function in a vtable. Importing __cxa_pure_virtual from a library works for all versions of GCC.
Make these definitions compatible with the other ambient size_t and
(u)intptr_t types used in the rest of our code base.
This partly reverts the corresponding typedef changes from wine commit
d8ab5a14aa
"msvcrt: Use intptr_t or size_t instead of long where appropriate."
Refine the algorithm introduced in commit c560342f08 (r75667, r75676),
whereby the installation source path is based on the full image file path
of the installer program, and of the \SystemRoot symlink.
Also reverts commit 6f389a35db "Add a workaround for installing from USB drives"
CORE-17818
+ SAL2-annotate and add Doxygen comments.
----
In case the \SystemRoot full path prefixes the image file path,
use the resolved \SystemRoot as the installation source path.
Otherwise, use the image file path.
The \SystemRoot symlink target resolution needs full path reparsing,
because it can reference other symlinks. This is what happens, for
example when booting the installation from a removable hard-disk.
We can have:
\SystemRoot ---> \Device\Harddisk1\Partition1\ReactOS
and: \Device\Harddisk1\Partition1 ---> \Device\HarddiskVolume2
etc.
and we wish to resolve \SystemRoot to: \Device\HarddiskVolume2\ReactOS
instead of keeping the former version (using Harddisk1\Partition1).
We then verify whether it prefixes the image file path, which is
a fully reparsed path.
Based on the Doug Lyons' test in #7087, I found that my previous fix stopped working partially. Or rather, it would only work until the 32767 indexes were exhausted. It seems to me that the behavior of the bitfield has changed, because when I published the previous patch, it passed my tests.
- Bit array generates free ID cyclically, in the previous code after 32767 indexes expired the same index was returned, because of this the previous fix would stop working after expiration, so change the logic of calculating the next index.
- Change the index range to 256-32767 to match Windows, indexes 0-255 can theoretically be used as reserved for system purposes.
Addendum to fd327db20f. CORE-9141
According to tests, legacy fp state is not saved in kernel mode.
Also add an int 2c to the path that changes cs, as it should not be used and probably never will be.
CORE-13525
This is done so that the caller doesn't need to know details
about particular architecture specifics, like VBR, MBR etc.
Extra checks and specific handling is also performed for supporting
bootloader installation on removable media:
- verify whether the media is a floppy or some other removable media,
- depending on which, a suitable file system is chosen,
- and if the media is not a floppy, do the supplemental partition
verifications to determine whether the media is a "super-floppy"
(in the partitioning sense).
This function could be generalized later to copy other files necessary
for the bootloader; removing also the currently hardcoded placement in
the installation source directory, and instead, using a configurable
path (specified in txtsetup.sif); etc.
Adapted from a commit by Timo Kreuzer (see PR #7420)
Co-Authored-By: Timo Kreuzer <timo.kreuzer@reactos.org>
KeFlushQueuedDpcs is used by some drivers, when unloading or removing a device, to be sure no DPC is still running their code. On a UP system this can be done "inline", on an SMP system, it requires to send an IPI to each processor that has DPCs queued and also synchronize it with the calling thread, which is what KeSetSystemAffinityThread does implicitly: When a queued DPC was detected on a remote processor (implying that processor is currently running at DISPATCH_LEVEL or above), KeSetSystemAffinityThread will schedule the current thread on that processor and send a DPC interrupt. The remote processor will handle that DPC interrupt once it is back below DISPATCH_LEVEL. It will only run the current thread, after all queued DPCs (including threaded DPCs) have finished running.
- Use _alloca instead of non-standard alloca
- Use _TCHAR instead of non-standard TCHAR
- Use _off_t instead of deprecated off_t
- Use _O_BINARY instead of O_BINARY
* [MKISOFS] Fix Clang check for macOS platforms
On macOS, CMAKE_C_COMPILER_ID is "AppleClang". While certainly Clang,
this does not match the exact string "Clang" that is being checked for,
and as a result the warning flags guarded thereby are not passed to the
compiler. With this change CMake will recognize both Clang and AppleClang.
* Update sdk/tools/mkisofs/CMakeLists.txt
- The original code was just incrementing the reference counts (RefCounts)
of the device objects or the device/file handles, without decrementing
them when closing the handles. This is now fixed.
Notice the following:
* When opening a file on a device (disk), the device's (and its
handle's) RefCount is incremented, and the file handle's RefCount
is incremented as well.
* When closing a file, the file handle's RefCount is decremented
(and the file closed if the RefCount reaches zero), and the file's
parent device handle is also closed, recursively.
This has the effect of decrementing the parent device handle's
RefCount, and the device's own RefCount is decremented as well.
IMPORTANT NOTE: The usefulness of handle-level RefCount is still
under question, and might be (consistently) removed in the future.
- Fix opening a device (disk) in direct access, when this device is
already opened. Indeed, we previously allowed direct access only if
the device was opened as such for the very first time (its RefCount
= 0 originally); no filesystem mounting was attempted as well.
Then for any later open-operations on this device (while keeping an
already-opened handle to it), filesystem access was assumed.
Thus, this problem would show up in two ways:
* Either the device is first opened for direct access, this succeeded
and no filesystem was mounted. Then, for any other open-operations,
the filesystem was NOT mounted, and opening files on it would fail.
Direct accesses would succeed but would create an unnecessary second
file handle.
* Or, the device is first opened for file-access: a filesystem was
mounted and file opening would succeed. Any other file opening
operation would succeed as well (if the file exists). But, a direct
access open-operation would fail, because now any open-operations on
the device would be assumed to be a file opening.
This is now correctly fixed. If direct-open is requested, just do it.
If this is a file opening, we open the device, then try to mount a
filesystem on it (if not already done), then we try to open the file.
If file opening fails, derereference the device.
- Pass the file path to the filesystem-specific Open() functions without
truncating the leading path separator, if any. This has to be handled
by the filesystem routines themselves.
This prevents MSVC from reordering the exports in a way that doesn't match our spec file. Also improve the algorithm to apply ordinals, by starting with the first specified ordinal, possibly reserving ordinals for anything declared without an ordinal before.
PathIsExeW is used and will exclude exe, com, pif, cmd, bat, scf and scr. The previous #6122 PR added support for the FTA_Exclude flag and that will exclude .lnk files.
CORE-19805
Addendum to commit baa47fa5e.
Similarly to what was originally done, have KdbpCliInterpretInitFile()
parse the KDBinit file by breaking back into the debugger.
But contrary to before, replace the deprecated call to KdbEnter() by
a standard DbgBreakPointWithStatus(DBG_STATUS_CONTROL_C) . This allows
KdbEnterDebuggerException() to do the KdbpCliInterpretInitFile() call.
Additional fixes and improvements:
- Run KdbpCliInterpretInitFile() in full KDBG environment (interrupts
disabled, modified IRQL, own stack), like the usual interactive loop.
- The KDBinit data buffer must be in non-paged pool.
- Demote the "Could not open KDBinit" error to a DPRINT, so that it
doesn't pollute the debug log when the KDBG init function is called
early (before the storage stack is initialized), or if the file
doesn't exist -- since this is an optional feature.
- Move the printing pager state reset code (setting the number of
printed rows and columns to zero, and the output aborted flag)
to KdbpDoCommand(). This allows to keep the original behaviour,
while also inheriting it whenever KdbpDoCommand() is invoked
elsewhere (for example, from KdbpCliInterpretInitFile()).
- Use KdbPuts/Printf() instead of KdbpPrint() for the entry banners,
so that they aren't subject to the current printing pager state.
Do the same for the "command unknown" error in KdbpDoCommand().
- Add a "Type 'help' for a list of commands" banner, for the users.
- Replace the do-while-loop with a simple while-loop.
- Support loading protocols like XP
- Support most of the relevant EditFlags
- Support reading/writing the AlwaysShowExt and BrowserFlags properties
- Loads the list much faster with optimized code and delaying the large icon and description string
- Reduce the number of magic buffer sizes by replacing them with defines that are in the ballpark of being correct
- Implemented column sorting
- Removed custom icon extraction code
- Removed IDS_FILE_EXT_TYPE string because it must be the same as IDS_ANY_FILE
- Don't touch verb keys that are not edited to retain the original REG type
- Don't clobber unchanged %1 icon location when editing a type
CORE-19756
Those haven't been groomed anymore for more than 10 years. We had many thousands of
different freeldr builds with different behavior and bugs each, but nobody ever
did have the slightest motivation to update those hardcoded
FREELOADER_MAJOR_VERSION, FREELOADER_MINOR_VERSION, FREELOADER_PATCH_VERSION
from ver.h. And that is logical, because touching other modules will change the behavior
of freeldr as well, so it is absolutely impossible to groom anything like that correctly.
Instead we should simply do what we started to do in PR7383, which will at least give
some information (the actual sources it was built from) instead of some misleading voodoo-version.
This might slightly shrink the size of freeldr as well, but I was too lazy to measure by how much.
This function combines those that write a message to and read
a message from the specified pipe into a single operation.
Its usage helps in simplifying the code further.
In addition:
- Acquire ControlServiceCriticalSection just before doing the pipe
operations, and release it just after.
- SAL2-annotate ScmControlService().
- Re-order the ScmControlService() parameters in a more natural way
(image comm pipe, service name, control code; then: arguments for
the control command).
- Improve some DPRINTs.
Tweaks all AUTOCHECKBOXes in desk.cpl
no functional change intended, it seems to work well when testing it locally
Makes the rcs shorter
it also makes the binaries a few bytes smaller:
GCC8.4.0dbg RosBEWin2.2.2 DESK.CPL shrinks 650.240 bytes -> 647.168 bytes
it prettifies also the display in reshacker
Previously FsRtlNotifyVolumeEvent would pass a pointer to a TARGET_DEVICE_CUSTOM_NOTIFICATION structure on the stack to IoReportTargetDeviceChangeAsynchronous, which would store a pointer to it in a work-item and process that after the stack object was already out of scope. This broke x64 boot. Started happening after recent fixes to IoReportTargetDeviceChangeAsynchronous.
CORE-19724
sdk/lib/cmlib/cmcheck.c: Print the HCELL_INDEX indices in hexadecimal.
------------------
sdk/lib/cmlib/cmcheck.c:321:60: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'ULONG' {aka 'unsigned int'} [-Wformat=]
and at lines 341, 357, 374, 554, 579, 733, 760, 801, 984, 1003, 1458,
1476, 1521, 1551, 1670
sdk/lib/cmlib/cmcheck.c:1251:65: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'HCELL_INDEX' {aka 'unsigned int'} [-Wformat=]
and at lines 1282, 1303, 1551
sdk/lib/cmlib/cmcheck.c:1326:79: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'LONG' {aka 'int'} [-Wformat=]
sdk/lib/cmlib/cmcheck.c:1684:76: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'CM_CHECK_REGISTRY_STATUS' {aka 'unsigned int'} [-Wformat=]
and at line 1711
------------------
sdk/lib/cmlib/cmheal.c:223:108: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'ULONG' {aka 'unsigned int'} [-Wformat=]
and at lines 240, 319, 335
sdk/lib/cmlib/cmheal.c:480:79: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'int' [-Wformat=]
------------------
sdk/lib/cmlib/hiveinit.c:976:62: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'ULONG' {aka 'unsigned int'} [-Wformat=]
and at lines 988, 1492
CORE-19724
sdk/tools/cabman/dfp.cxx:1136:36: warning: 'sprintf' may write a terminating nul past the end of the destination [-Wformat-overflow=]
1136 | sprintf(InfLine, "%s=%s", GetFileName(SrcName).c_str(), DstName);
| ^
sdk/tools/cabman/dfp.cxx:1136:20: note: 'sprintf' output 2 or more bytes (assuming 4097) into a destination of size 4096
Fix the case when GetDriveTypeW would return DRIVE_NO_ROOT_DIR when it
got a volume GUID name and had to access an unformatted volume.
Fixes Rufus not being able to find an unformatted volume after writting new MBR.
QueryDeviceInformation returns more reliable volume length and works
with unformatted volumes. It will return volume length only on ROS and Vista+ however,
so also keep the GetFreeDiskSpaceExW as a fallback for XP/2003.
During investigation into some of the USB stack issues we've been running into I've found that when a USB storage device is already plugged in during boot and removed before it finishes initialization we run into this assert.
The logic in this function removes the pools made for the following entries in DeviceExtension indiscriminately this makes debugging a bit more difficult. Instead of depending on this behavior of ALWAYS being filled with valid data, let's free the following pools ONLY if they're initialized. This change prevents us from bugchecking when USB flash drives are removed early during boot. This makes the debugging experience a little more sane.
- `ArcOpen()`: flatten the registered-device search for-loop.
Limit it to just the device search, and exit early.
The rest of the initialization is now done outside the loop.
- The `DeviceName` string pointer may have been allocated from
the heap, for path normalization (see `NormalizeArcDeviceName()`).
This pointer is then only used in the device search loop and not
nused anymore afterwards. The old code didn't free this pointer
and memory could leak. This is now fixed easily, thanks to the
loop flattening.
- Rename `DEVICE` member `Prefix` to `DeviceName`; SAL-annotate
`FsRegisterDevice()`.
- Replace a lot of `MAX_FDS` by `_countof(FileData)`;
- The duplicated FileId validation logic is wrapped with
the `IS_VALID_FILEID()` macro.
- When returning an invalid FileId value on purpose, use
`INVALID_FILE_ID` instead of `MAX_FDS` (that could vary
if the file handle table gets extended).
And replace the `(ULONG)-1` also used for that purpose
by `INVALID_FILE_ID`.
- Add missing DeviceId invalidation:
* when failing to open a file handle in `ArcOpen()`;
* when registering a new device in `FsRegisterDevice()`.
There, having DeviceId always set to zero would tell
the code that the corresponding device's file ID is
the first one in the table, which is a BUG. (Many devices
would have the same file ID...)
- In addition: massage a bit some indicial for-loops.
This allows to make the code better extendable: adding a new FS
mount routine into the table, instead of duplicating also a whole
`if (!FileFuncTable) ...` check.
Later, this table will be made dynamic, so that new filesystems could be
dynamically registered at runtime, and a filesystem could be forced to
be mounted by the user (using a specific syntax).
----
Thanks to the following testers!
- Dmitry Borisov (@disean) for testing on NEC PC-98 emulator;
- Justin Miller (@DarkFire01) for testing on UEFI platform;
- Stanislav Motylkov (@binarymaster) for testing on Xbox emulator
(xemu), both livecd and bootcd.
----
"SectorsPerTrack" is for the legacy Cylinders/Heads/Sectors(PerTrack)
scheme.
- On BIOS-based PCs, INT 13h can return (for LBA-only drives) an invalid
geometry, like: C/H/S = (-1)/(-1)/(-1). This is also what happens in
our hwide.c driver (see IdentifyDevice() for ATAPI devices):
db419efbf2/boot/freeldr/freeldr/arch/drivers/hwide.c (L918-L928)
as well as on VirtualBox for CD-ROMs:
https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/PC/BIOS/disk.c#L155
- Therefore, we cannot reliably calculate a valid total number of sectors
by multiplying the Cylinders*Heads*SectorsPerTrack values. In addition,
such a multiplication could overflow a 32-bit ULONG.
Thus, a separate ULONGLONG Sectors member is required to hold such a
value, that is retrieved differently. For example for ATAPI devices,
our hwide.c driver does return a valid TotalSectors value, even though
CHS values are invalid. Other platforms, like UEFI, just work using
logical block addressing (LBA) values (see EFI_BLOCK_IO_MEDIA).
- uefidisk.c : Per the spec, EFI_BLOCK_IO_MEDIA::LastBlock contains
"The last LBA on the device. [...] For ATA devices, this is reported
in IDENTIFY DEVICE data words 60-61 (i.e., Total number of user
addressable logical sectors) _minus one_.
For SCSI devices, this is reported in the READ CAPACITY parameter
data 'Returned Logical Block Address field' _minus one_."
In other words, LastBlock is a zero-based LBA index quantity. The
corresponding total number of valid "sectors"/blocks of the device
is therefore, (LastBlock + 1).
- Cleanup some old disabled code.
* [MSIEXEC] Sync msiexec to wine-9.8
* [WINESYNC] msi: Disable FS redirection for temporary file in cabinet_copy_file().
wine commit id a58c6251870dfb7d214464e709bbbc9ca649b900 by Paul Gofman <pgofman@codeweavers.com>
* [WINESYNC] msi/tests: Correct a couple of failure messages in test_msirecord.
wine commit id 2fde0a3f5c233b0ea1637f409998ce4ee85d28a7 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Use the wcsdup function instead of reimplementing it.
wine commit id 7cc7a6defc08d4de7574b7a75d574c3ab1f32db8 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Use _O_* constants from fcntl.h instead of redefining them.
wine commit id b07c95e79cdf6ae26c5170daa481ad160e0ce76a by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Remove wrappers around CRT memory allocation functions.
wine commit id d920aa81ad0c4618c27ebd7e9863618e988328e0 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Initialize all members of WINTRUST_DATA.
The pSignatureSettings field was not unitilized so it got a random value from
the stack causing a later crash when it was dereferenced in Wintrust
(SoftPubloadSignature).
wine commit id 904bedb3e96bc68101652e151db102532399abe8 by Philip K. Gisslow <ripxorip@gmail.com>
* [WINESYNC] msi: Fix memory leak on realloc failure in create_diff_row_query (cppcheck).
wine commit id 3e231d0f36a56ce991c7edbb6ae7845094e8417e by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix memory leak on realloc failure in msi_get_window_text (cppcheck).
wine commit id 6c1dd0f2c5669e084eb1f84571c38761a97c0970 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix memory leak on realloc failure in search_directory (cppcheck).
wine commit id d394df4a30feb685927908fce2887bf5496b5d66 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] ntdll: Default to Windows 10.
wine commit id 69154f0329aec4fb64886a0689da198b5323dcde by Hans Leidekker <hans@codeweavers.com>
* [MSI] Fix build
* [WINESYNC] Update winesync file
* [WINESYNC] msi/tests: Avoid test failures when running with insufficient rights.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51040
wine commit id 79ec3d9fb8551e84e9ff71dcf18861430246278a by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Install and patch global assemblies in InstallFinalize.
Installing global assemblies requires assembly caches to be initialized and
this is no longer the case after the PE conversion (builtin fusion no longer
loads if the dll is not present on disk).
The next patch changes msi to perform late initialization of the assembly
caches so that native fusion can be loaded once it's installed by .NET
installers. However, there's no guarantee that all necessary files and
registry keys are installed before the InstallFiles and PatchFiles actions
are executed. Therefore this patch moves the parts of these actions handling
global assemblies to InstallFinalize.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51345
wine commit id 2c450fd6215c0da4685143f97ece8b6db0f54a0b by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Perform late initialization of the assembly caches.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51345
wine commit id d9d700f3328f00ec419571df0e02cef208fa1e7b by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Remove msi_ prefix from static functions.
wine commit id 3611398b7575177b91e8162a84ebca977c50c2f5 by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Get rid of unnecessary typedefs.
wine commit id 258012742512a4072265fcc47826c52319bd37ab by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Handle memory allocation failure in get_link_file (cppcheck).
wine commit id 687c4f5c8dc65def6fc066d5d802d7448db70d7f by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Annotate memory allocation functions with __WINE_(DEALLOC|MALLOC).
wine commit id 9df04bfdb03a3017f532e70a047ee83290dbc257 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi/tests: Fix the ok() formats so they match the size of their arguments.
wine commit id b6fb1b8983af7644b78bb0ba5fb9d18a1f0822f1 by Francois Gouget <fgouget@codeweavers.com>
* [WINESYNC] msi/tests: Ok_() takes printf-style arguments.
This lets the compiler check that the format and argument sizes match.
wine commit id a80b183af74194a06af3281ee272590a7134b7f1 by Francois Gouget <fgouget@codeweavers.com>
* [WINESYNC] msi: Return ERROR_OUTOFMEMORY if calloc fails in TransformView_Create (scan-build).
Instead of ERROR_SUCCESS.
wine commit id daa20d9d636057d7009ff3652a8577b423d23fcf by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Make TransformView_Create static.
wine commit id 1da5618cbac1214082bfb897dc81804d14fc6e9e by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix memory leak in ready_media (scan-build).
base_url was never freed, and can simply be enlarged instead of copying
it to a new buffer.
wine commit id c39f785b34692ee994b2449cc17a96815517e9bf by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix memory leak on error path in MSI_ProcessMessage (scan-build).
wine commit id d06b3fd5274b056c720e2fb42eb189052d99404d by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Release record instead of free.
../dlls/msi/dialog.c:4476:11: warning: attempt to call free on non-heap object 'hdr' [-Wfree-nonheap-object]
free( &rec->hdr );
^
wine commit id 7b3690dd7399cd64123554c8a6fc7e35dcbebbe1 by Daniel Lehman <dlehman25@gmail.com>
* [WINESYNC] include: Remove redundant __WINE_USE_MSVCRT checks.
wine commit id 93630ce14ebf16333fda8481b5ede6f587eb32ca by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msi: Fix memory leak on error path in MSI_OpenPackageW (scan-build).
wine commit id 4db2ffa60e16e06b4f6ef89fcc4c73229f4446b1 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix double free on error paths in TransformView_Create (scan-build).
If TransformView_Create returns an error, it should not return a pointer
that table_load_transform will try to free.
wine commit id 0653409e0631582d89edaab0ac516994710dae1a by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Fix memory leaks in HANDLE_CustomType23 (scan-build).
wine commit id 993f4d48d23477e70e92256890c77687a1c4ba08 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Reject shorter/longer lines in MsiDatabaseImportA.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54532
Signed-off-by: David Kahurani <k.kahurani@gmail.com>
wine commit id e1ddc58a259d80f16bf1e62f23428775e1b070a0 by David Kahurani <k.kahurani@gmail.com>
* [WINESYNC] msi: Convert newlines to alternate representation when exporting.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54532
Signed-off-by: David Kahurani <k.kahurani@gmail.com>
wine commit id 60e4f8a261ae9044aafa9c4eec2a3f2aec6481b5 by David Kahurani <k.kahurani@gmail.com>
* [WINESYNC] msi: Remove DECLSPEC_HIDDEN usage.
wine commit id 51049c95a242f1553562a442142e813e37cee233 by Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
* [MSI] remove DECLSPEC_HIDDEN
* [WINESYNC] msi: Fully initialize the control structure in dialog_line_control().
Fixes: 76606eaea034c51a73190aac92e75d8b20e82164
Fixes: 174b7b51ac9e57c6cfa8f48e62bbf468ae3b1f24
wine commit id 735584076efafc29673e0c9418a64343634f9aa5 by Jinoh Kang <jinoh.kang.kr@gmail.com>
* [WINESYNC] msi: Make insertion order of line controls consistent with other controls.
Fixes: 2c5bd49297f79d9941a256d8ec61e0eb2bf9bf9c
wine commit id 3eceda2f2a77754f0bf93ea33018e8ef49e82669 by Jinoh Kang <jinoh.kang.kr@gmail.com>
* [WINESYNC] msi: Don't open code dialog_add_control() in dialog_line_control().
Commit b1cc87cb656 ("msi: The line control has a height of exactly 2
device units.", 2007-12-16) open-coded the body of
(msi_)dialog_add_control() inside dialog_line_control() modulo the
height override.
Except the fixed height, line controls have nothing special compared to
other controls. Thus, there is little merit in open-coding it.
Also, dialog_line_control() has bit-rotted over time; it already missed
a few changes that were done to any other controls.
Fix this by just using dialog_add_control(). Also, add a special case
logic just for line controls.
wine commit id 1fca47b724b3835ac0267f58c5b3486fc222fc71 by Jinoh Kang <jinoh.kang.kr@gmail.com>
* [WINESYNC] msi: Use nameless unions/structs.
wine commit id 8de0a9dc740d3ed1e3cf9460852db7e609122f3b by Alexandre Julliard <julliard@winehq.org>
* [MSI] disable nameless structs
* [WINESYNC] msi/tests: Use nameless unions/structs.
wine commit id 490aee03e45222aa9d7e3e7fd6ff80064dc3778d by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] makedep: Use #pragma makedep testdll for TESTDLL resources.
wine commit id 81da9ff0f8dea4932a3afdc4c447c1c9242bb596 by Rémi Bernon <rbernon@codeweavers.com>
* [WINESYNC] msi: Use CreateFileW() for handling path from cabinet_open() instead.
wine commit id 085e95cd5eceb36c3e21cb7d42adab5a6af38a38 by Jactry Zeng <jzeng@codeweavers.com>
* [WINESYNC] msiexec: Use CRT allocation functions.
wine commit id 0f44b3bdcb3d91701a9a8ef1ad07f3e88c08a666 by Alex Henrie <alexhenrie24@gmail.com>
* [WINESYNC] msi: Remove DECLSPEC_HIDDEN usage.
wine commit id 91e81083458374706bbace11114f4ad5e473ac07 by Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
* [WINESYNC] msi: Store Context as MSIINSTALLCONTEXT in MSIPACKAGE.
Avoids casting to enum pointer in msi_locate_product call.
wine commit id 2daa8c9f95b35983c885f5f7efe9e1b48e91f679 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] msi/tests: Initialize pathkey in test_installprops.
It could be used uninitialized on early no access return.
wine commit id 93668319dd63add97036fbb79b5745c699117313 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] regsvr32: Use message boxes by default for output.
regsvr32 is in GUI subsystem and shouldn't interact with console.
Keeping unix I/O output in silent mode.
Removing -c option as not existing in native.
Signed-off-by: Eric Pouech <epouech@codeweavers.com>
wine commit id ac8da35b87005e45947b8164a4132f3bbb4ec2cc by Eric Pouech <epouech@codeweavers.com>
* [MSI]: Reduce diff
* [WINESYNC] msiexec: No longer use console/file output APIs.
Regular GUI apps don't.
Signed-off-by: Eric Pouech <epouech@codeweavers.com>
wine commit id e048f71ecbb103ae7c1876092cb8244b24a73cb7 by Eric Pouech <epouech@codeweavers.com>
* [WINESYNC] msi: Fix a memory leak (Coverity).
wine commit id 4afca1787febb012d0cdd2c007dd32beba35178d by Zhiyi Zhang <zzhang@codeweavers.com>
* [WINESYNC] msi: Don't write past end of string when selecting parent directory.
wine commit id bbce5d014db7f023b133d6d09e6846e027586f7d by Fabian Maurer <dark.shadow4@web.de>
* [WINESYNC] msi: Avoid leaking stream on DB update.
MSI_RecordGetIStream adds a reference to the stream. This
reference should be negated as we are done setting the stream.
Signed-off-by: David Kahurani <k.kahurani@gmail.com>
wine commit id 386dbe1059ba08485696760c267ef06dbed95bad by David Kahurani <k.kahurani@gmail.com>
* [WINESYNC] msi/tests: Expand costing tests.
wine commit id 674efeb1f7445935cf4f49dd1285727055664ab9 by Zebediah Figura <zfigura@codeweavers.com>
* [WINESYNC] msi: Round costs up to 4096 bytes instead of clamping.
wine commit id 9725a2286acdb791de316295d9bcb11411a3fd56 by Zebediah Figura <zfigura@codeweavers.com>
* [WINESYNC] msi: Store component cost in 512-byte units.
This avoids overflow when component costs exceed 4 GB.
wine commit id d7bbe884ef29215f4db2027f450fb959314f5383 by Zebediah Figura <zfigura@codeweavers.com>
* [MSI] store component cost in 512-byte units
* [WINESYNC] msi: Multiply by 512 in dialog_vcl_add_drives().
The main motivation here is to avoid overflow, and multiplying in one place seems simpler.
wine commit id 4a227c62a59a55aff9bacf1473c7f478f5c83294 by Zebediah Figura <zfigura@codeweavers.com>
* [MSI] reduce diff
* [WINESYNC] msi: Create the custom action server as an elevated process.
Dragon Naturally Speaking 12.5 manually validates that the custom action server
is elevated.
One might imagine that the right approach here is to add a manifest to msiexec;
however, msiexec does not always trigger a UAC prompt on Windows.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51143
wine commit id 366398cc53c76028c8dfe8d8a16c78a6a10ce962 by Zebediah Figura <z.figura12@gmail.com>
* [WINESYNC] msi/tests: Delete the temp .msi file in all failure cases.
wine commit id 43fb0ecd0717ad1a6aa0702ed68368ee35d3ecda by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] msi/tests: Use the helpers from utils.h in more modules.
wine commit id b3f11ceb7a0ddcf5fe742377f99c947b0b56a051 by Hans Leidekker <hans@codeweavers.com>
* [MSITEST] include util header
* [WINESYNC] msi/tests: Try restarting tests elevated.
Wine starts processes non-elevated since e92ba2de43d7afbe0704b11b29f7c30f44dfaeca
which means that many tests are skipped now.
wine commit id a6eb51f0e595b2e5ddc521fb61b10d72849dd0f2 by Hans Leidekker <hans@codeweavers.com>
* [MSITEST] try restarting for tests elevated
* [WINESYNC] msi/tests: Get rid of workarounds for old Windows versions.
wine commit id 738ec8285583248a84349939734ed600a47ba73d by Hans Leidekker <hans@codeweavers.com>
* [MSI] fix patch failed
* [WINESYNC] msi: Install global assemblies before running deferred custom actions.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56493
wine commit id 7f0ca9c284d15d03f14a8fefefac834990d622cd by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC] msi: Install global assemblies after install custom actions and before commit custom actions.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56609
wine commit id 27f5470ff4c20121b9eacd702c888400191c7d9e by Hans Leidekker <hans@codeweavers.com>
* [WINESYNC]: msi is now in sync with wine-staging wine-9.8
* [MSI] Fix build
* [WINESYNC] Update WINESYNC doc
* [MSI] Remove nonameless* defines
* [MSIEXEC] Fix build
* [MSIEXEC] Fix build
* [MSI] Fix vcl_get_cost
We do have 22 rc files. Strip a hardcoded version in all of them.
Which hasn't been groomed by anyone for longer than the year 2005 already (SVN r18478).
What a waste of bytes!
We had a mixup between languages regarding WS_CHILD, CBS_SORT for some comboboxes.
Harmonize that by:
- Strip explicit WS_CHILD from all comboboxes (because it is implicitly available)
- Strip CBS_SORT from IDC_EFFAPPEARANCE_ANIMATIONTYPE and IDC_EFFAPPEARANCE_SMOOTHINGTYPE because Windows does not sort them.
This fixes the wrong order in those controls
Avoid using magic numbers for structures and ease the day for those
who do not remember IEEE 802.11 specifications by heart.
- Add a #define that matches by name with one used since day one
of Visual Studio 2008 (VS2005 does not have Native Wi-Fi SDK)
- Remove magic constant from DOT11_SSID.ucSSID size definition
Reference: https://learn.microsoft.com/en-us/windows/win32/nativewifi/dot11-ssid
CORE-6905
This commit tries to improve the quality of the screenshots that we do get posted in JIRA,
where we couldn't even see up to now which build and arch was run.
This is in the wider context of CORE6762
(I intentionally left out the minus in the CORE-ID to prevent auto-linkage to that ticket)
When the Int 13h AH=42h "Extended read" function fails, the disk address
packet's LBA block count is reset to the number of blocks that have been
successfully transferred. This is more or less fine, unless one wants to
ensure the exact number of sectors gets read.
If the function fails so that zero sectors were read, the retry loop is
restarted, but with the packet's LBA block count member reset, as per
the documentation. (In this example, it is reset to zero.) Then, at the
next retry attempt, zero sectors are requested to be read, and this time
of course, the call succeeds... Wrongly, of course, this is not what's
expected.
Therefore, for each retry, the LBA block count member should be set
again to the correct number of sectors to read. There are maximum 3
retries, so the retry loop will stop anyway, but the LBA read will now
correctly fail and return FALSE, as expected.
This problem doesn't exist in the retry loop for the Int 13h, AH=02h
"Read Disk Sectors" CHS function, because here, the call is made only
using registers, and we use a pair of RegsIn/RegsOut. RegsOut receives
the modified register values, but the input RegsIn stays unchanged.
For reference, see the cdfs/cd.h RAW_ISO_VD structure.
Each of the old "VolumeSetSize", "VolumeSequenceNumber" and "LogicalBlockSize"
ULONG fields actually correspond to pairs of USHORT fields:
"VolumeSetSizeL" and "VolumeSetSizeM", etc., where the "L" one contains
the value in little-endian format, while the "M" one contains the same
value in big-endian format.
Additionally, use UCHARs for the character arrays.
Create the section with PAGE_READWRITE, not PAGE_EXECUTE_READWRITE and map in user mode with PAGE_READONLY, not PAGE_EXECUTE_READ.
Original commit was ea5261f in 2006. The comments suggest that back then the heap code had issues with it, which is not the case anymore.
- Delete CAppRichEdit::SetWelcomeText() and move its implementation
inside CAppInfoDisplay::SetWelcomeText().
- Make CAppInfoDisplay::SetWelcomeText() select a suitable text,
depending on normal mode or APPWIZ mode.
- IDS_WELCOME_TITLE: Remove the double \n\n from the resources,
and add them programmatically instead.
The count makes sense only in normal mode, where we can select many apps
for bulk-install.
Split the IDS_APPS_COUNT string into it and IDS_APPS_SELECT_COUNT, and
append the number of selected apps only when we aren't in APPWIZ mode.
- Only the "Installed/Applications/Updates" items are shown.
- Delete the "Settings" item in the "File" menu.
- Remove unnecessary toolbar buttons: ID_INSTALL, ID_CHECK_ALL, ID_RESETDB.
- gui.cpp CMainWindow::ProcessWindowMessage():
Forbid the "Install" tree-view section to collapse.
However, there is currently a bug in Wine's comctl32, which ignores
the value returned from the TVN_ITEMEXPANDING notification handler
to control the collapse/expansion behaviour.
https://bugs.winehq.org/show_bug.cgi?id=53727
As a result, this feature doesn't work in ReactOS yet.
As it currently is, it doesn't provide much useful information.
It will be re-enabled later when we support other columns ("Publisher",
"Size", "Installed on", ...) and the possibility to show/hide columns.
- The #if was missing x86 (Windows SDK bug!)
- The unaligned attribute was on the wrong side (Windows SDK bug!)
- Add a comment that these are unsafe and shouldn't be used
This function is exported from shlwapi.dll since version 4.71.
It has been publicly documented in MS PSDK and MSDN since at least
Windows XP/2003 and claimed to be declared in shlwapi.h; however,
this is inaccurate: it has been declared only starting Vista PSDK.
This is a single header that wraps around the RTL bitmap API. It keeps track of the number of set bits and a hash of the bitmap. The integrity of the bitmap is checked on each call to any of the RTL bitmap APIs. This only works, if the bitmap is consistently modified using only RTL bitmap APIs and not manually messing with the bitmap buffer.
Looks like public symbols contain this structure starting with Win7,
so we can deduce what it looked like in Win2003.
Note that our previous definition was missing a second ULONG at the
end, which can be seen in the SeQueryInfoToken kmtest -- if you
allocated only sizeof(AUX_ACCESS_DATA), the test would crash with
a 4 byte buffer overflow.
Pass a proper write/execute flag in the ExceptionInformation[0] field of the exception record instead of the raw fault code. This fixes comdlg:filedlg wine test, which writes to a write protected resource section, which needs to be handled by kernel32 UnhandledExceptionFilter, which relies on this parameter to be correct.
This fixes ExceptionContinueExecution cases, where we want to continue execution on the original context (or as modified by the handler), not on some halfway unwinded one.
It is now a wrapper around GdiPolyDraw, which implements the main body of the function, while the Nt function only probes and captures the user mode data into safe kernel mode buffers.
Previously some people thought it was a great idea to just wrap the entire implementation in SEH, so when something throws an exception somewhere for whatever reason, we can just catch it here... and LEAK ALL RESOURCES IN THE PROCESS!
TODO: Rewrite all of this. It's broken everywhere.
Each language had exactly one dlg which specified its font like that.
All other dialogs didn't use that style.
This doesn't fix anything. It also doesn't shrink the binary.
It just saves a few keystrokes in the rc's.
Shorter is better. Pure janitorial.
- Fix "icone" typo in French (must be "icône");
- Add missing trailing semicolons for options introducing a choice;
- Tweak the IDC_EFFAPPEARANCE_KEYBOARDCUES translation to make it
a little bit shorter and allowing to reduce the dialog a bit more
(not yet "perfect" but towards the goal).
"unnamed class used in typedef name cannot declare members other than
non-static data members, member enumerations, or member classes."
Suggestion by Whindmar Saksit.
Use `struct LISTVIEW_SORT_INFO` instead of the typedef, since this
is a structure defined and used only in this file, and we don't use
pointers to it (LPLISTVIEW_SORT_INFO).
- use _countof() consistently throughout the module instead of mixed ARRAYSIZE/countof.
In *.rc:
- the 3 AUTORADIOBUTTONS should not end with dots. In Windows 2k3sp2 ARB do never end with dots, I double-checked that here also in desk.cpl
- all 3 ARB should have an accel. I added the german ones, and added FIXMEs where I didn't know the correct accels
- the GROUPBOX IDC_SCREENS_DUMMY2 should not have an accel, but the only button in there PUSHBUTTON IDC_SCREENS_POWER_BUTTON should have an accel. This fixes a few existing accel collisions, e.g. in nl-NL.rc
- add a few additional FIXMEs for missing accels where I stumbled over them (most of them I fixed by guessing in the older branches, but I think it makes sense to let the actual native speakers fix them with the same accel that would be used in the 2k3sp2-version of *their* language)
- ro-RO.rc: Fix the forbidden characters according to the romanian-translation-rules
I noticed those glitches while porting back stuff, and acted on the FIXMEs in the backport instead of just fingerpointing to them (what I did on master).
This is a Vista+ function, but it exists in Windows XP/2003 internally
and used for drawing "Window Text" with a shadow in DrawNCPreview().
And DrawThemeText() now acts as wrapper on top of it. CORE-5991
PR #7173 (22b913928f) fails to initialize the DELETED_FILE_RECORD struct when constructing a RecycleBin5File instance. This causes _ILCreateRecycleItem to create PIDLs without filenames and the CRecycleBin IShellFolder does not expect this to happen.
Also fixes incorrect usage of SHFileOperationW when restoring deleted files. The previous code might have worked by chance in the past if the string just happened to be double-null terminated as required by this API!
Remove remaining ketypes.h and mmtypes.h public headers for PowerPC architecture.
Addendum to 6ef6fabfc5 and e372f2b19b. These headers were forgotten to be removed in those previous commits.
This reverts commit 2636cff09f
by Cătălin Gabriel Drăghiță (@jeffbox12) as well as any subsequent changes.
This was agreed upon by the original author on our official Mattermost
chat (chat.reactos.org)
The reactos.bmp banners are again generated from the file:
dll/win32/msgina/resources/svg/reactos.svg
Makes the "Desktop" icon look a bit more than the thing from Windows 7. Both: bottom-most right-most within the taskbar, and also used within the comdlg32 file-open-dialog.
* Update desktop icon (35) in shell32
* Fix SVGs
Co-authored-by: Fabian Maurer <dark.shadow4@web.de>
Based on @DarkShadow44's merge
request to WineHQ.
JIRA issue: CORE-19402
Merge Request: https://gitlab.winehq.org/wine/wine/-/merge_requests/5756
Proposed changes
Extend CC_CheckDigitsInEdit's
parameters and set infoPtr->updating
to TRUE when updating.
Call CC_PaintLumBar function in
CC_WMCommand function.
I found this bug while testing random games, the left key didn't work.
After switching to other keyboard layouts (German, English) the problem
disappeared. There are games (e.g. Doom 3 demo, Tomb Raider 2 demo) that
somehow use this code from extended_key_names to determine which key the
user pressed. It might be a good idea to check other keyboard layouts too,
since I found that table inconsistent across languages.
The return value of RtlFindClearBitsAndSet is an ULONG, assigning it to an ULONG_PTR will not sign extend it. The error value will stay 0xFFFFFFFF. Comparing it to (UINT_PTR)-1 will sign extend and thus compare it to 0xFFFFFFFFFFFFFFFF on x64.
Also use NUM_WINDOW_LESS_TIMERS to initialize the bitmap, rather than the calculated size. This does not make a difference with the current value (32768), but if it was not the case, the bitmap would be larger than this, resulting in invalid bitmap indices being returned, which would cause bugs later on. Finally remove an ASSERT that can be triggered by tests.
Translated the old English explorer shell lines into Turkish and fixed
some incorrect Turkish translations.
Adapted the translation from Windows 7 with Turkish locale.
Matches Turkish translation in the desk.cpl applet, except one string
that I borrowed from Windows 7 with Turkish localization.
Updated the latter in desk.cpl as well.
Distinguish between the following 3 scenarios:
1. Interactive Winsta0, "Winlogon" desktop: use 128 KB
2. Interactive Winsta0, "Default" & other desktop: use 3 MB (x86) / 20 MB (x64)
3. Non-interactive winsta: use 128 KB
This is what Windows 2003 uses for the interactive desktops on x86 and what Windows 7 uses for x64. Fixes desktop heap exhaustion during testing. The previous value was 512 KB for all desktops.
It doesn't handle the even smaller "Disconnected" desktop, which is only meaningful for RDP sessions and we don't use it anyway.
See comments in the file for references.
Fix caret positioning regression from Wine Sync to Wine 5.0 affecting notepad.
Restore older Wine code that handles caret position with ReactOS better.
This was a regression from 0.4.15-dev-8612-g0707475 0707475f69
CORE-19731
For SOME reason comctl32 has been synched manually multiple times to different versions and different pots
This PR aims to fix that
With the exception of button.c which all in all is a massive fork over wines code entirely.
and datetime.c which is at wine 6.0
Comctl32 is now at wine-5.0
Fixes a bug where if you close Notepad while it is maximized, the next time Notepad is started it will start with its window placed as if maximized but it is still in the SW_RESTORE state and the "real normal placement" is lost.
SetWindowPlacement also takes care of making sure the window is placed correctly on the monitor workarea.
Optimize BroadcastSystemMessage with Environment parameter.
Minimize processing when UserModeMsg->lParam is NULL and KernelModeMsg->message != WM_WININICHANGE
Make sure that we have a UNICODE_NULL within lParamMsg based on comment from @whindsaks
@I_Kill_Bugs fix
CORE-11787, CORE-17721 and CORE-19721
For function IntExtTextOutW with space character, the x-dimension should be taken into account.
Fixes HexEdit 1.2.1 right side of display window not being cleared.
Account for x-dimension if TA_UPDATECP flag set and 'String' is not NULL.
Clarify 'etx' is ASCII End of Text
As part of fixing some bugs like CORE-13149, extend the tests to include more detailed examination of rendering functions. Extend the RedrawWindow test to include tests of all flags. As part of it, I am also testing the 2-point states of the render areas.
I moved the original test without changes into a separate function GetMessageRedrawWindowTest. For the flag tests I added FlagsRedrawWindowTest function. It sequentially tests the RedrawWindow with different flag combinations and compares the results with those discovered in Windows XP and Windows 11 (the values in both versions confirmed to be identical).
The API test turned out well in ReactOS, the only deviation was that in many cases (whenever the RDW_INVALIDATE flag is present) a WM_ERASEBKGND message is received after the window is rendered without the RDW_ERASE flag.
(this is what I'm focusing on now in https://github.com/turican0/reactos/tree/fix-RDW_ERASE-in-co_UserRedrawWindow, but before I merge it, I want to create more API tests)
- [SDK][INCLUDE] Redirect CLSID_ConnectionFolder to CLSID_NetworkConnections
CLSID_NetworkConnections is the official known name for the class behind it,
thus to avoid breaking current code I 'softlink' CLSID_ConnectionFolder
to the currently used CLSID_NetworkConnections in shlguid_undoc.h.
- [SHELL32] Refer to CLSID_NetworkConnections from PSDK
- Add bugcodes dependency, fixes a rare build failure
- Fix for the sync part of commit 823fdb19d7, somehow it didn't pick up the change from the upstream commit b22efbb8b8
__ftol2 is exported from msvcrt on NT6+, not from ntdll for some reason. So native apps still need to statically link _ftol2 and _ftoul2_legacy, but apps linking to msvcrt only need to statically link _ftoul2_legacy (via msvcrtex), when on NT6+.
CORE-13525
- Newly-created partitions and unpartitioned space ar reinserted
or updated in correct order in the tree-list. Volume-creation
information data associated with the tree items is persisted
across operations.
- Reliably delete data associated to tree-list items via the
TVN_DELETEITEM notification.
This allows simplifying the cleanup function; keeping simple
the code that deletes items when deleting partitions, etc.
- Make the PrintPartitionData() function call itself recursively on
extended partitions to display the sub-list of logical partitions.
- Handle the new partition size in MB the same way as in USETUP.
- Allow existing partitions/volumes to be re-formatted, using
common code with the partition creation dialog.
- Allow selecting unpartitioned space or non-formatted partitions
for installing ReactOS: unused space will automatically be
partitioned and non-formatted partitions formatted (the user
is prompted for choosing the file system).
- Correctly zero the progress-bar position when starting file copy.
- Add missing file copy error handler in FileCopyCallback:
just copying what USETUP does.
This is used by CL v19.41+. It replicates the behavior of the inline assembly code that previous CL versions generated. According to tests it works the same as with previous VS versions.
These tests come with a VS solution, because that is the only way to test against a known good system, as the required runtime functions (like _ftol) are statically linked from the VS runtime library.
Checks CORE-19669, making sure that CS_HREDRAW and CS_VREDRAW
are respected when the client area changes due to the scrollbar
disappearing or re-appearing.
ROSTESTS-397
Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
* fix CORE-9141 - adding a change to IDEvent after each pass
If the first index is 0 the first returned ID will be 0x8000, which is fine.
Co-authored-by: Joachim Henze <joachim.henze@reactos.org>
Test 1 - test of creating/canceling 20 timers and comparing the raw number of returned messages - without parent window
Test 2 - test of creating/cancelling 20 timers and comparing the raw number of returned messages - with parent window
Test 3 - test creation/cancellation of 40000 timers - without parent window
Test 4 - test of creation/cancellation of 40000 timers - with parent window
Test 5 - test creation/cancellation of 2 timers and compare their index to see if they differ - without parent window
Covers the case in CORE-9141 (see #7087).
CORE-13525
This greatly helps in reducing code complexity in some areas: code that
previously iterated over all partitions of a given disk, just to find
which ones were partitioned and contained a valid file system, now just
have to iterate over mounted volumes.
See in particular, `lib/utils/osdetect.c` and `lib/fsutil.c` .
- Remove FORMATSTATE "Preformatted" enum value;
- Cleanup osdetect code after introducing Volume support;
- Some simplifications for FormatState.
- Differentiate between 'new' partition and 'new' volume:
* "New" partition: it has been created and added in the cached list,
but not yet actually written into the disk.
* "New" volume: newly-created volume (may be backed by a partition or
not), not yet formatted. May exist on either new, or not new partition,
or elsewhere.
- Cache partition and volume NT device names.
These do not change across repartitioning operations, as long as the
partition or the filesystem volume hasn't been deleted/recreated.
This avoids doing \Device\Harddisk%u\Partition%u sprintf's everytime
we need to retrieve the given partition or volume device name.
When a partition/fileysystem volume is "virtually" created (i.e. in
the partition list, but not yet committed to disk and exposed to the
OS), no device partition number and device name are available yet.
In particular, validate that no manipulation of \Device\HarddiskM\Partition0
(i.e. the whole disk) is being made.
According to our declaration/definition, IoChangeFileObjectFilerContext returns NTSTATUS, not BOOLEAN. Zero return (which was actually checked before) for BOOLEAN means failure, but for NTSTATUS it's success. So it should (and now actually does) free and fail appropriately only in failure case, but not in success, when it shouldn't.
This fixes most of problems with fltmgr.sys driver from Windows XP/Server 2003 and a lot of 3rd party filter drivers which use it from many apps (Avast Free Antivirus all versions, Avira AntiVir Personal 8.2, Dr. Web Security Space 8.0, Kaspersky Antivirus 2012 etc. etc.).
CORE-14157, CORE-14635, CORE-19318
GCC8.4.0dbg warns about:
C:/ros/reactos/base/applications/mspaint/lang/it-IT.rc:267: unrecognized escape sequence
Fix that.
the regression was introduced by
0.4.15-dev-8555-g fbcbbd8768 from (#7248)
360 matches, exactly 12 matches for each language, 30 languages.
This will not shrink the binary, it just shortens some long lines within the rc-sources.
Addendum to commit 32e6eed760 (r63715)
CORE-5982
The function assumed that the directory path name to be created
always starts with a harddisk-partition root device name of the form:
\Device\HarddiskX\PartitionY\
Indeed, it can be (when using the volume manager) of the form:
\Device\HarddiskVolumeN\
and could even have a different format if trying to install ReactOS
on an external removable drive or other weird device.
Since the format of this prefix is not 100% always the same,
a different way to create the sub-directories is needed.
The nested-directory creation algorithm is changed as follows:
Suppose that the directory to be created is:
\Device\HarddiskVolume1\ReactOS\system32\drivers
The function first loops backwards each path component in order
to find the deepest existing sub-directory: it will try to verify
whether each of the following sub-directories exist, successively:
\Device\HarddiskVolume1\ReactOS\system32\drivers
\Device\HarddiskVolume1\ReactOS\system32\
\Device\HarddiskVolume1\ReactOS\
\Device\HarddiskVolume1\
(Notice the trailing path separators kept in this step.)
In principle, this root device FS directory must exist (since the
volume has been formatted previously). Once found, the function will
then create each of the sub-directories in turn:
\Device\HarddiskVolume1\ReactOS
\Device\HarddiskVolume1\ReactOS\system32
\Device\HarddiskVolume1\ReactOS\system32\drivers
----
An alternative to the fix could be to always specify the root device
name in a separate parameter, but this hasn't been pursued here so as
to not modify all the callers of this function.
It was introduced in commit 703eb5e8c9 (r7756) in order to hack around
the "dot"-path added in the reactos.dff generator file by the earlier
commit 3bd689f185 (r7269).
Its aim was to describe the installation directory itself, instead of
one of its sub-directories.
That _invalid_ "dot"-path was removed later by commit 027e2bfa3a (r15423);
however the '\.' hack stayed for quite a while in our code.
The correct way to describe the installation directory itself is to use
instead "\", compatible with Windows' setup, as was originally done in
txtsetup.sif, and fixed in reactos.dff(.in) in commit 97bb83fcd9 (r66604).
ID_HELP_HELPTOPICS & ID_HELP_ABOUT are statusbar helptexts, and they do exist
twice for no good reason since 10+ years. Dedupe that.
Also add a few missing accelerators for it-IT.rc
Also strip the trailing dots for some languages for the statusbar helptexts (5 langs: ja-JP,tr-TR,zh-*)
Vast majority of languages did not have them at all (24 languages).
Also en-US was such a good role-model.
Some had it just for some of those texts, but for others not (e.g. pt-PT). Inconsistent.
All statusbar helptexts are within those exact 3 STRINGTABLEs now.
- POPUP() is used on DBG only.
- SND_ERR() and SND_ASSERT() are wanted even when defined(NDEBUG).
- Add a FIXME as !defined(NDEBUG) code compilation remains broken.
Follow-up of c7a4984 (0.4.15-dev-8414).
A small change before PR #5705 was merged caused a severe downgrade in the snap/unsnap handling. Win key handling should work correctly now.
CORE-19165 CORE-19166
Implement Favorites bar.
JIRA issue: CORE-19686
- Introduce CNSCBand class to commonize
some code of CFavBand and CExplorerBand
classes.
- Implement Favorites bar.
- Fix IBandNavigate and INamespaceProxy
interfaces.
Support for system batteries in ReactOS is really minimal to the point of non-existing. We are detecting the presence of any upcoming battery but since there's lacking in critical code that deals with communication
between PO and the battery class driver as the battery systray icon uses GetSystemPowerStatus to gather battery info which in turn inquires the power manager via NtPowerInformation(SystemBatteryState), we have
to report to the user that the remaining capacity is unknown rather than returning a pseudo capacity value.
Technically this so called "pesudo" value is just a construct denoted as BATTERY_PERCENTAGE_UNKNOWN. Not reporting the actual remaining capacity makes sense, as there could be a scenario where the battery may not
properly report its real datum, therefore it's best to be honest to the user what's really going on.
CORE-19452
CORE-18969
The variadic DisplayMessage(V) helpers display a message box, where
both the title and message can be specified either as explicit strings
or via resource IDs. It also supports the message to be a printf-like
format string, in which case the additional formatting arguments are
subsequently specified.
It will be used to determine how the bootloader has to be installed, etc.
Currently hardcoded for XBOX, or rnutime-determined for NEC PC-98 and BIOS-based PC-AT.
More thorough runtime determination will be added in the future.
At first QueryStatus call, output is written to Irp->AssociatedIrp.SystemBuffer.
Unfortunately, this is also the BattWait buffer.
At return of QueryStatus call, BattWait buffer has been modified, so
following code can't use it anymore.
Fix memory overwrite by copying BattWait buffer on the stack.
Fixes many Window Snap related bugs and uses the WS_EX2_VERTICALLYMAXIMIZED* styles to remember which edge it is snapped to.
The most significant change is that GetWindowPlacement lies about the normal position when it is snapped, just like Windows.
CORE-19160 CORE-19165 CORE-19166
Stuff from the stone-age, not used anymore.
* ID_REGISTRY_PRINTSUBTREE & ID_REGISTRY_PRINTERSETUP have been fused into one in newer MS regedit.exe. Older versions of MS regedt32.exe had that separated still, see https://github.com/reactos/reactos/pull/7194#discussion_r1695021919 for some details and screenshots about that.
* ID_REGISTRY_OPENLOCAL is obsolete too for the same reason.
* ID_REGISTRY_SELECTCOMPUTER can be stripped too, because it was historically replaced by ID_REGISTRY_(DIS)CONNECTNETWORKREGISTRY
co-authored by hermes.belusca-maito@reactos.org
And fix that typo also for the IDS-name itself.
For the record: The it-IT.rc: is the only language where "Escudo portoghese" with O is
actually correct according to google translator, and therefore not touched (confirmed also by native it-IT Carlo-Bramini).
- The PIDL format needs to be Windows compatible so that wlanwiz can get the connection GUID.
- SHELL32::ILIsEqual cannot deem PIDL formats it does not understand as invalid.
- DefView must ask the folder when comparing PIDLs.
Implement undocumented MmProbeAndLockProcessPages routine. Based on mm-implement-mappingaddress.patch by Thomas Faber from CORE-10147, with some improvements from me.
It's badly required by FltMgr.sys driver from Windows XP/Server 2003 and closely used by a lot of apps those are depending on this driver (e. g., Avast Free Antivirus several versions, Avira Antivir Personal 8.2 etc. etc.).
Fixes several asserts from MDL support routines when the 3rd-party minifilter drivers are loading FltMgr.
CORE-14157
Bugs fixed:
- fDefault detection of default verb is flawed because it checks the ici struct after conversion instead of the source sei struct.
- The command to execute should not have the filename appended just because %1 nor %L did not appear in the registry command template.
- Tweak AUTORADIOBUTTONS (AUTORADIOBUTTON implies BS_AUTORADIOBUTTON). This saves a bit of source-file-size and binary size.
- and use the backspace key for improving alignment to column 39 for the controls names in PRINT32_SETUP DIALOG & PRINT32 DIALOG
- and fix 3 accel collisions for upper chinese translation &OA &A &R
- and add a few FIXMEs for existing accel collisions in other languages
- fix a few strings in cdlg_Sr.rc
JIRA issue: none
Note1: I intentionally used only the backspace-key and not the space key to improve the alignment in PRINT32_SETUP DIALOG & PRINT32 DIALOG, so please refrain from any review-suggestions of the form "oh you could add another space here, or another space there". I will not do that in this PR. I just aligned some strings to column 39 (same as it is used within the Wine-master-rc-file)
Note2: I will only accept accelerator suggestions as replacement for the added accel-FIXMEs that have been double-checked by a native translator from the native 2k3sp2, but no guesses.
- de-DE: add accelerators for the menus, inspired by german XPSP3
- *.rc: It is portuguese, not portoguese (this has been fixed in en-US earlier already, but was forgotten to be merged into other languages
- *.rc: CTRL is not used in capital manner by MS, but MS used Ctrl, and MS did not use STRG but Strg for de-DE. Our en-US respected that already, but again stuff was not synced into other languages when it was improved earlier in ros
Therefore this PR has absolutely no changes for en-US because that was good already.
Harmonize the captions of the 3 dlgs IDD_DIALOG_SCIENTIFIC, IDD_DIALOG_STANDARD, IDD_DIALOG_CONVERSION
Some languages had different strings used here, which leads to an undesired flip in the caption if one switches between the different views of the app. Very unelegant. E.g. cs-CZ, ko-KR, th-TH suffered from that.
MS uses just the term "Calculator" in these captions, and not "Windows Calculator".
So we can also just use "Calculator" instead of "ReactOS calculator".
To perfectify the illusion / being more similar to MS.
Don't worry: The word "ReactOS" is still present in at least 4 strings, e.g. in 3x IDM_HELP_ABOUT and IDS_CALC_NAME. So nobody will think it is not our Calculator after that change.
As a nice side-effect the binary size shrinks slightly: e.g. for GCC8.4.0dbg:
530.432 -> 528.596 bytes
Fix a typo in "ジドウテキニ" word: `\274\336\304\336\263\303\306` (ジドウテニ)
that was introduced in 2009 year (commit 379ce6f163).
The word "ジドウテキニ" is "自動的に" in Kanji, means "automatically".
* [NTUSER] Implement BroadcastSystemMessage with 'Environment' parameter
CORE-19372
CORE-19583
* Changes based on reviewer comments.
* Make sure that lParamMsg has a UNICODE_NULL in it.
* Skip extra handling of 1 word messsages.
- Reimplement WriteWord using the WriteByte helper.
- Remove inline qualifiers from the bus read and write functions.
This code path is considered "cold" and using an inline for it is overkill.
- Don't apply the IRQL restrictions to our PnP state transition helpers.
They are only called at IRQL below dispatch level.
- Properly handle the case when the dependent function is placed
after fixed resources
- Initialize the version and revision fields of resource lists
- Improve validation of resource data
- Add more debug prints
CORE-18562
On the second click on "Show desktop" button, the minimized windows
are not restored, because after the first click, and the addition to
`CSimpleArray<MINWNDPOS> g_MinimizedAll`, a call to `RestoreMinimizedNonTaskWnds()`
via `HSHELL_WINDOWACTIVATED` message clears the list of minimized windows.
Don't empty `g_MinimizedAll` while processing HSHELL_WINDOWCREATED or
HSHELL_WINDOWACTIVATED messages (bDestroyed=FALSE).
Empty `g_MinimizedAll` only when SendPulseToTray is called with bDestroyed=TRUE.
Addendum to e6bced7a35 and 70d7009ad9. CORE-19703 CORE-15369
JIRA issue: CORE-19705
#7163 (960a305) made a regression on DllRegisterServer.
The cause is lacking IDR_EXPLORERBAND that
CSearchBar wants.
IDR_EXPLORERBAND for CSearchBar is a mistake.
- Use IDR_FILESEARCHBAND resource instead of
IDR_EXPLORERBAND resource for CSearchBar class.
Refactoring on keyboard layout.
JIRA issue: CORE-19268
- Delete co_UserActivateKbl function.
Use co_UserActivateKeyboardLayout
function instead of
co_UserActivateKbl in
co_IntLoadKeyboardLayoutEx
function.
- Improve
co_UserActivateKeyboardLayout.
Fix shell path parsing.
JIRA issue: CORE-19693
JIRA issue: CORE-19694
- Fix CACListISF class by using
PIDL attributes.
- Use min macro instead of max
macro in Shell_ParseSpecialFolder
function.
CORE-6149, CORE-6179, CORE-9529
See also commits d329fbebf (r66995), 7c3f4c94a (r68307), and 16daf6700.
The function verifies that each path component of the directory is
a valid 8.3 name, not . or .. nor empty. This behaviour is compatible
with what can be observed from Windows XP/2003 installer.
(To reliably test this with the Windows installer, you need to modify
the TXTSETUP.SIF DefaultPath value in the [SetupData] section.)
Reverts the IsValidPath() move done in commit 9c64b57dc.
- Turn IsValidPath() into a IsValidInstallDirectory() helper function
available in the setuplib, so that it can also be used in the GUI setup.
- Introduce a IS_VALID_INSTALL_PATH_CHAR() macro.
which have been introduced during 0.4.15-dev'ing when romanian resources were updated.
C:\buildbot_config\worker\Build_MSVC_x86\build\dll\win32\rasdlg\lang/ro-RO.rc(508) : warning RC4206 : title string too long; truncated at 256
C:\buildbot_config\worker\Build_MSVC_x86\build\dll\win32\rasdlg\lang/ro-RO.rc(521) : warning RC4206 : title string too long; truncated at 256
see MSVC builder https://build.reactos.org/#builders/1/builds/24117
The fix respects the rule 1 of the Romania translation notes also, same as Andreis commit did.
Also fix a few places where ". " was the case (unintended double-space)
JIRA issue: CORE-19268
- Define ImmFreeLayout parameter special
values (HKL_SWITCH_TO_NON_IME and
HKL_RELEASE_IME) at <imm32_undoc.h>.
- Make ImmFreeLayout parameter an HKL.
HAHA! Got you Stasm! :D
Just kidding!
In fact:
For the record the RES_LAST_INDEX was totally too small, someone forgot to increase it
for the last ~50 people that were added here.
I added 6 names today:
"Carl Bialorucki"
"Doug Lyons"
"Katayama Hirofumi MZ"
"Joachim Henze"
"Oleg Dubinskij"
"Whindmar Saksit"
For the record: I waited > 10 years to add myself to grab the cool number 66 all for myself!
- Deduplicates unused IDC_REGEDIT MENU vs. actually used IDR_REGEDIT_MENU
- shrinks the binary size, GCC8.4.0dbg build shrinks from 1.052.672 -> 1.049.600 bytes
- that also solves a few FIXME's, e.g. in hu-HU, pl-PL, sl-SI, sq-AL, tr-TR, uk-UA
- translates the help-popup string in th-TH.rc
- slightly tweak some headers to be a bit closer to newstyle without going all the way
- also link to LPGL2.1+ in the source files to reduce the wall-of-text, also some other whitespace tweaks in those, but no functional change
- security.c: vertical-compactness-whitespace-changes aim to get HeapAlloc closer to HeapFree
- id-ID.rc: "&Data nilai" and "&Nama nilai" does exist in 4 dialogs, Harmonize them
- pt-PT.rc: add 2 missing accels in IDD_EDIT_STRING
- edit.c: 3x ARRAY_SIZE
- the most review-worthy change in the actual .h/.c files is clb.c the change from ClbWndClass.hInstance = hinstDLL, ClbWndClass.hIcon = NULL; to ClbWndClass.hInstance = hinstDLL; ClbWndClass.hIcon = NULL;
- clb.c the stripped INT_PTR-cast for EndDialog() was Co-authored-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
This converts it from Windows-1252 to UTF-8.
Otherwise the changes to this file are not rendered correctly by GitHub.
As a core developer and repository maintainer, I have the right to change
file contents (including its encoding) without prior discussion, as long as
it corresponds with the repository's code of conduct.
I won't permit curtailment of my rights!
This is my answer and addendum to the commit b6bf110890,
which tries to disrespect me as a developer and maintainer.
JIRA issue: CORE-19268
- Rename KLF_UNLOAD as KL_UNLOAD.
- Move it from win32ss/user/ntuser/input.h
to sdk/include/reactos/undocuser.h.
- Add UKL_NOACTIVATENEXT constant
and use it.
AUTORADIOBUTTON implies BS_AUTORADIOBUTTON.
This style is shorter in code, and has the tendency to shrink the binary size also
when applied consistently. In case of progman the shrinking is not enough to reach the
next lower quantum of binary size though, GCC8.4.0dbg sticks to 192.512 bytes.
Because it's simply not enough of those buttons, since we have no localization for that module.
No change in behavior in that dlg.
* [CALC] *.rc: AUTORADIOBUTTONS, ja-JP: Add accel &V
- Tweaks AUTORADIOBUTTONS, code shorter, binary smaller
calc.exe shrinks for GCC8.4.0dbg cfg:
530.432 -> 527.360 bytes
I checked, that there is no change in behavior with those radiobuttons,
it is intended (and same on MS Windows Calc that we can not jump from one button
to another by arrow-keys here, and also not with tab if any of those radiobuttons
has keyboard focus.
- ja-JP: Add missing accel &V in main menu
- in some headers I worked slightly towards the modern style
without going all the way yet. This also fixes the common ukraiaiaiaiaiaiainian typo
- Add some non-MS-accelerators into IDD_LOGPROPERTIES for some functionality where our eventvwr does outperform the MS version. We do have some edit-fields selectable, where MS decided to not have them selectable. Can be used for copying out text.
- Therefore we considered that it may be beneficial to have accelerators for them as well.
- I used &S &C &E &A (instead of Katayamas former &S &C &M &A because the M is already in use in that dlg) where that did fit, and tried to manage the other languages without introducing collisions
- I also added a textual disclaimer on how to deal with that for the translators and with the aim to protect that diff to MS
also fix some inconsistencies in the length of the IDS_COPY lines for some languages
- fix some text cutoff for el-GR,pt-BR, pt-PT at the radio-buttons
- improve german Help-accel
- add some FIXMEs where some langs had accel collisions, let the native speakers with their native 2k3sp2 handle them later
This moves the IExplore registration from cmd.exe (established in 4a4060ce3c (r52196) for CORE-1370) to syssetup.inf to avoid console popups on first boot.
While functional, Katayama's show desktop button left much to be desired
in the realm of appearances. This commit brings improvements for it:
- When using the classic theme, the Show Desktop button now appears
more faithful to its Microsoft counterpart, emblazoned with an icon,
and encased in a border only when hovered or pressed.
- With a visual style applied, the button behaves in one of two ways:
- If present, the Show Desktop button now properly uses the relevant
information from the visual style, just like on Windows 7.
- Otherwise, the Show Desktop button uses an icon akin to when the
classic theme is used, but with the button background's appearance
repurposed from the taskbar toolbar buttons, which are guaranteed to
exist in any Windows XP or Vista visual style you can find out there.
ReactOS's own Lautus and Mizu visual styles will be updated in the
following commits to utilize these features, while Lunar and Modern visual
styles left untouched to display Show Desktop button with icon instead.
CORE-15369
Based on @Doug-Lyons
shlexec-winR-fonts.patch.
#4932 (f691efe) introduced
some regression.
JIRA issue: CORE-19688
Call SearchPathW function before
PathFindOnPathExW call in
ShellExecCmdLine function.
PR #7141 causes calls to IShellBrowser::BrowseObject while the shell browser is in the middle of destruction and the ShellView ListView has already been destroyed and DefView is not prepared for this.
Invoking the IDList as if the target was double-clicked in Explorer fixes shortcuts to control panel items (both .cpl and ShellFolder types).
CORE-19690
The shell protocol path needs
special parsing. We didn't
implement it correctly.
JIRA issue: CORE-19693
- Add tests for
shell:windows\system32
and shell:windows\fonts.
CORE-15298
Use DrawTextW() to correctly render disabled grayed text.
Applies to both dll\win32\comctl32\static.c and win32ss\user\user32\controls\static.c
A similar solution is already used by button.c!BUTTON_DrawLabel().
CORE-17545
Clang 13.0.1 was warning about broken 'Ret' handling.
Also remove an unrelated redundant 'else ...'.
Addendum to commit 6dfa71c487 (r68904).
First step to Favorites bar support.
Menu: [View]→[Explorer bar]
→[Favorites]
JIRA issue: CORE-19686
- Add CFavBand.cpp, CFavBand.h,
favband.rgs, and resource.h files.
- Modify CMakeLists.txt.
- Add IDS_ADD and IDS_ORGANIZE
resource strings.
- Implement empty Favorites bar.
- The treeview is not populated yet.
- The Add button is not
implemented yet.
CORE-17200
Helps reducing debug log noise like:
```
(drivers\storage\port\scsiport\ioctl.c:542) unknown ioctl code: 0x4D0018
```
The other notifications are already implemented there.
These are handled by the volume manager, which is currently
stubbed into ReactOS' partition manager.
See commit ed27d733f7 for what the deprecated versions
of IOCTL_MOUNTDEV_LINK_[CREATED|DELETED] are all about.
Notes:
- Also fixes a bug where Del does not work in the AddressBar nor during Tree/List label edit because it gets eaten by the accelerator.
- Removed the code that handles CtrlA in the AddressBar because the Edit control does this out of the box.
This GetPathCase function does
resolve the path with wildcard
pattern, and fix the alphabet
cases, by using
kernel32!FindFirstFile function.
Enable wildcard at the middle
of the file path in cmd.exe by
fixing this function.
JIRA issue: CORE-6609
JIRA issue: CORE-13906
- Fix GetPathCase function for
supporting wildcard at the
- middle of the file path.
- Make GetPathCase string-safe.
- Optimize GetPathCase.
JIRA issue: CORE-14177
JIRA issue: CORE-17482
- Add SHELL_InvokePidl helper
function.
- Call SHParseDisplayName and
SHELL_InvokePidl in a specific
condition.
- Fix typos in the Release and Renew functions. The typo caused the functions to work on the first adapter only.
- Fix a typo in the german translation.
Refactoring. Optimize for speed.
JIRA issue: CORE-12619
- Update file headers.
- Make some parameter type LPITEMIDLIST
LPCITEMIDLIST (Add const).
- Add OnChangeNotify method.
- Use SHCNRF_NewDelivery method for speed.
- Add some SAL annotations.
In order for the NT power manager to interact with the Win32 subsystem (thus the whole rest of the system), the Win32 kernel-mode subsystem provides a mechanism that communicates with the kernel power manager via power callouts (aka power requests as per Windows' PDB symbols).
Such mechanism enters in action as soon as Win32 callout routines are estabilished with the PsEstablishWin32Callouts() function.
The NT power manager, the power policy manager respectively, invokes a power callout to denote an exceptional phenomena as a result of power policies or capabilities changes, turning ON/OFF the display, a system time change has occurred, etc.
Such scenarios are described as power events of which the NT power manager sends a WIN32_POWEREVENT_PARAMETERS packet to Win32k via the estabilished "PowerEventCallout" pointer function callout.
For other callouts that inform the Win32 subsystem of impeding power state changes across the system or devices, these are sent as WIN32_POWERSTATE_PARAMETERS packets with its own separate callout.
The purpose of such mechanism is to give Win32k the opportunity to do power related tasks and alert every application of such power events in accordance with what it gets notified by the NT power manager.
Currently this patch stubplements this mechanism in ROS, it is only just the barebones for now. The development of the Win32 power manager will go in parallel with the kernel power manager development (expand, improve, fix the code of issues that whatever may arise).
So far only the PsW32SystemTime power event is implemented for the moment being. This work was decoupled from PR #5719 to avoid clobbering it too much.
=== TODO ===
- Implement power states management communication with the kernel power manager
- Implement the rest of the power events in IntHandlePowerEventWorker
- Implement power event handling in CSRSS (or WinSrv?) which handles any of the events that could not be handled by Win32k otherwise
- Estabilish the power state callout in PsEstablishWin32Callouts() (currently there is no a pointer function that gets assigned to such callout)
CORE-18969
Don't free the linked font name if it's already NULL. Since it is allocated only once (when loading the font name from Registry), it should be freed only once too. All subsequent freeing attempts will result in invalid pool freeing.
This fixes the 0xC2 BAD_POOL_CALLER bugcheck when trying to resize window (and draw more text) from soundcloud.com in K-Meleon 76.5.4 Goanna engine and when switching between channels (during redrawing the text) in DiscordMessenger v1.06 Beta.
Addendum to 0f9e889736.
CORE-19681
CORE-18139
When a partition is created, PartMgr notifies the volume manager
(FTDisk on Windows <= 2003, VolMgr on Vista+) of its presence.
(Note that currently in ReactOS, our partmgr does the job of both
PartMgr *AND* VolMgr.)
The VolMgr then sends a `GUID_DEVINTERFACE_VOLUME` PnP notification,
which is handled by the mount manager (MountMgr) as part of a
`GUID_DEVICE_INTERFACE_ARRIVAL` notification:
```
MountMgr!MountMgrMountedDeviceNotification -> MountMgrMountedDeviceArrival
followed by
MountMgr!MountMgrTargetDeviceNotification
```
When a partition is deleted, via e.g. Disk Management or DiskPart,
it can be observed, on Windows, that the PartMgr gets notified by
the PnP manager, as part of QueryDeviceRelations. Before actually
removing the partition, it notifies the VolMgr. The latter invalidates
any volume mounted on that partition (`*PartitionRemoved*` functions
for basic volumes), then requests (`*DeleteMountPoints` function)
the MountMgr to delete all the mount points associated to the volume:
```
VolMgr!*DeleteMountPoints
-> MountMgr!MountMgrDeviceControl -> MountMgrDeletePoints
```
**** THIS is the new functionality that is implemented for ReactOS ****
**** in the present commit. ****
Following this, a subsequent PnP notification is sent, which calls
```
MountMgr!MountMgrTargetDeviceNotification
-> MountMgr!MountMgrMountedDeviceRemoval
```
(Note that this observation somewhat invalidates the modification
made in ReactOS commit 62a4f9d42b : our MountMgr placed in Windows
*WOULD* receive a `GUID_TARGET_DEVICE_REMOVE_COMPLETE` target-device
notification...)
Finally, a `GUID_DEVICE_INTERFACE_REMOVAL` PnP notification is sent
to the MountMgr:
```
MountMgr!MountMgrMountedDeviceNotification
-> MountMgr!MountMgrMountedDeviceRemoval
```
Fix font enumeration and AutoComplete on %WINDIR%\Fonts.
JIRA issue: CORE-9281
"Replace if (dwFlags ==
SHGDN_FORPARSING)" with
"if (dwFlags & SHGDN_FORPARSING)".
CORE-11569, CORE-19684
Addendum to commit 71bed0f5f8 (PR #7123).
The problem in uxtheme was introduced in commit 685084b63c (as part
of a fix for CORE-17203), because it was a copy-paste and adaptation
of the corresponding code in `ntuser/nonclient.c!NC_DoButton()`.
The bugs in `win32ss/user/ntuser/defwnd.c` (and `nonclient.c` as fixed by
the previous commit) were in turn introduced from the migration of menu
and related code from user32 to win32k, see commit 6dfa71c487 (r68904).
CORE-8002
The switch enables or disables file/path completion in a unique
CMD instance. The defaulted values for the completion characters
are those mentioned in CMD's help (see also MSDN[^1]):
File: Ctrl-F (0x06); Directory: Ctrl-D (0x04)
Manual tests show that only /F:OFF explicitly disables completion.
Otherwise, using /F(anything else following) always enables completion
with the specific values described above.
[^1]: For additional details, see also
https://technet.microsoft.com/en-us/library/cc978715.aspxhttps://technet.microsoft.com/en-us/library/cc940805.aspx
Unexpectedly remaining
AutoComplete list is annoying.
JIRA issue: CORE-19685
- Add CAutoComplete::
m_bEditHasFocus to watch
focus.
- Update m_bEditHasFocus on
WM_SETFOCUS and
WM_KILLFOCUS messages on
Edit window procedure.
- Don't open AutoComplete list
when m_bEditHasFocus was
FALSE.
Change 'pWnd->style' to 'pWnd->pcls->style' to check for CS_NOCLOSE.
Incorrect struct field was used for checking previously.
Fixes a bug with Ad Muncher that did not close when clicking on the window
title "X" button while being used with a Classic window style theme.
Patch by I_Kill_Bugs. CORE-11569
Make DATE command output compatible.
JIRA issue: CORE-13848
- Add STRING_DATE_NOW resource string for
localizing "The current date is: ".
- Output by ConOutResPuts function.
- fix AUTORADIOBUTTONS, BS_AUTORADIOBUTTON is not needed, when AUTORADIOBUTTON is used
- add a WS_GROUP | WS_TABSTOP to the first ARB
- this slightly shrinks the binary size by the way, because we don't need the "Button"-strings
- harmonize the 2 AUTORADIOBUTTONS width to 99 for all langs
- fix "Bus Nummer"-typo, which has been done already by someone in en-US, but other langs were forgotten
- sync untranslated cut-accel, which has also been done for en-US already, but was forgotten in other langs
- in all translations a big block has been moved within the rcs historically..., in all except nl-NL and no-NO. What a foolish thing to do! So catch up with that.
- ja-JP the thing with the cut-accel fixes an accelerator collision by the way &C vs &C
- nl-NL: strip GRAYED from ID_REGISTRY_CONNECTNETWORKREGISTRY, which was done for all other languages earlier already, but forgotten for this one
- The stuff with the AUTORADIOBUTTONS is a small optimization to slightly reduce code-size and binary-size.
- Also add a missing WS_GROUP to IDC_DEFAULT_SETTINGS, which prevents leaving the group of the 3 bottom-most buttons to the left with the left-arrow-key.
- we need to add a return TRUE into WM_INITDIALOG section of SettingsDlgProc() to handle the default keyboard focus correctly towards the topmost AUTOCHECKBOX in this dlg. That part was contributed by @whindsaks , thank you very much for that!
- pl.PL: Add a missing ES_AUTOHSCROLL
- improve a few accelerators here and there
For the record: If no additional style is set then an AUTORADIOBUTTON gets by default BS_AUTORADIOBUTTON | WS_TABSTOP
see https://learn.microsoft.com/de-de/windows/win32/menurc/autoradiobutton-control
The auto-complete window and
the IME candidate window were
conflicting each other.
JIRA issue: CORE-19268
Call HideDropDown method
when processing
IMN_OPENCANDIDATE message.
Improve compatibility.
JIRA issue: CORE-8002
- Fix the default values of AutoCompletionChar
and PathCompletionChar in cmd.exe.
- Populate "SOFTWARE\Microsoft\Command
Processor" registry key like Win2k3 does.
Add WS_GROUP style to the size grip to avoid the keyboard selection stuck.
Fixes keyboard navigation bug in the "Move to..." & "Copy to..." dialogs
that was making the button lose selection focus. CORE-19585
__throw_out_of_range_fmt is implemented in libstdc++, but it is needed by libsupc++ and that would mean we would have to link all C++ code to libstdc++.
* [WINESYNC] ntdll: Add support for parsing application settings in manifests.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id fc14442970dc6b97032c3cdd76cab33d774dc1a2 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Implement RtlQueryActivationContextApplicationSettings.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 14b9a5af0b44d7e2ca5232ad810c77e561d5d30c by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Propagate the error through the XML buffer in manifest parser.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 7b871727e5cbb8581167acbaae2f4e34dc4ee59e by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Check the namespace in RtlQueryActivationContextApplicationSettings.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e46259fb823f55aa331381fe56916d20049d52f2 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 10f23ddb58b0583c8bce99e59d879c653b389363 by Michael Stefaniuc <mstefani@winehq.org>
* [WINESYNC] ntdll/actctx: Don't stop looking for manifest if dll without manifest is found.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 56b3304a019486b52681a05d4b5454b475275e51 by Fabian Maurer <dark.shadow4@web.de>
* [WINESYNC] ntdll: Use the current platform as processorArchitecture instead of a wildcard.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6abf99b4803003812d4fcf7bf9effc99030cbec9 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use strncmpiW instead of memicmpW for strings without embedded nulls.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6fc259a57dafab9e72af13980c021e2a59257935 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Avoid dead initialization (scan-build).
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6ea282c7e1abd7ab09a5f0a18a437e63f909da96 by Alex Henrie <alexhenrie24@gmail.com>
* [NDK] Add RtlUTF8ToUnicodeN for user mode
* [WINESYNC] ntdll: Use the Rtl UTF8 conversion functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f46fa9c92d08c6e656bc22b94e09aa9dbe7d3be9 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use module path as assembly path for manifests embedded in resources.
Fixes Office 2016 installer, which removes its .exe directory from load
path, but expects to be able to load files listed in manifest.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 2d764e90dd2c624f7a2d863ab29bd418ed33d252 by Jacek Caban <jacek@codeweavers.com>
* [WINESYNC] ntdll: Store the default process activation context into the PEB.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e95d0813fdfcfcac2bb1761e62e1d54e6f73cd6d by Gabriel Ivăncescu <gabrielopcode@gmail.com>
* [WINESYNC] ntdll: Use wcsicmp() instead of strcmpiW() where possible.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 3e049b6b962b8e6f048101b9910c09d5b1d8f167 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcsnicmp() instead of strncmpiW() where possible.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id f831b3bd3d6b013893be7645df3a9cd05289c415 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use RtlEqualUnicodeString() instead of strcmpiW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4d93bafe961ed53488ff0fb4b44cb1ad085531fe by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Avoid using memchrW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 186f189107972b739311f95a4ba3833838349b32 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Avoid using atoiW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 8f3d869d784753d814a3493d01c3650f45389eda by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Avoid using sprintfW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id eb1b2e548656dc3d08cbf3c35454621491b84126 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcscpy() instead of strcpyW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 18411a19b4ea3a68234980c56d4c252670dfc000 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcscat() instead of strcatW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 80005ee016aeed42967adfe5b3042803d008c50d by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcschr() instead of strchrW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 6de0ab276b3b79db4331993316f529a43f67c29a by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcsrchr() instead of strrchrW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 285c5490a4c0ee4a92d042a3e6ab32e6bc14fb49 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcslen() instead of strlenW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e003b9884edcccc417d41d30073b312648741aaa by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcscmp() instead of strcmpW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4501ab0a7c80e31e602c540a446809e8ae3ebade by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use wcsncmp() instead of strncmpW().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id e36b97e1d0644f90606d27f5104bb09a910540d2 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Make the windows directory a global variable.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id ca13f489e18fb1f7944e3bdcfdfc4a810bf80994 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Use single field for misc flags in ComClass redirection section.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 72d055854b59db9059a3465f1e65247c0cc5e94e by Nikolay Sivov <nsivov@codeweavers.com>
* [WINESYNC] ntdll: Create class section for proxy-stub interface entries.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id dd9295b415345f2b686b65bd05fae0320cf6dc39 by Nikolay Sivov <nsivov@codeweavers.com>
* [WINESYNC] ntdll: Use the standard C library names for the printf functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 4478ba258e45559ac97353ab27951e84dd9865c1 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Implement RtlActivateActivationContextEx().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c71da19d24a5d6f01e65b3b3691a9d7dd17a2278 by Alexandre Julliard <julliard@winehq.org>
* [WINESYNC] ntdll: Fix a memory leak (Valgrind).
Signed-off-by: Chao Long <longchao@uniontech.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id d0946955ec21e4da57aaec92459f81f131b27a49 by Chao Long <longchao@uniontech.com>
* [WINESYNC] rtl is now in sync with wine-staging wine-5.18
---------
Co-authored-by: winesync <ros-dev@reactos.org>
Co-authored-by: winesync <rosdev@reactos.org>
CORE-18196
With most code copied from Thomas Faber's PR #4915 as follows:
[RTL] Correctly initialize segments larger than MAXUSHORT.
GuardEntry->PreviousSize would overflow in this case.
RtlpInsertFreeBlock already handles this correctly by creating multiple free entries.
So we just let it return the last entry and use that for the PreviousSize.
This does not include all of the ASSERT's in PR #4915.
Splitted from #7082. Correct behavior of
NtUserSetWindowPlacement function.
JIRA issue: N/A
- Check gptiCurrent->dwExpWinVer in
NtUserSetWindowPlacement function.
- Fix the last error.
* Tweak AUTORADIOBUTTONS (saves a bit of binary size and line length). The ones in the settings-dialog work very good.
For the record: In the main dialog there is no proper keyboard navigation possible, but that was also like that before I touched that dialog, therefore I ommitted the adding of WS_GROUP | WS_TABSTOP for those (they were also not there before, and the keyboard navigation cannot be double-checked yet). If someone will find them to be needed later, then they could be added later
* tweak some safe accels (driven by string-pooling)
* add missing ':' after IDC_DETAILS_STATIC
* temporarilly strip 4 accels from ja-JP that do not exist on 2k3sp2 and ros en-US. My next PR will restore that ros-intended diff for all languages, not just ja-JP.
Based on Hans Harder's patch.
Realize tracing cmd on console
output.
JIRA issue: CORE-6669
- Add FEATURE_DYNAMIC_TRACE
feature.
- Add CmdTrace function.
- Re-define FIXME, ERR, WARN,
and TRACE macros.
- Check CMDTRACE environment
variable. If it was "ON", then enable
dynamic trace.
This value is needed for
SetWindowPlacement and IMM.
JIRA issue: CORE-19675
JIRA issue: CORE-19268
- Add RtlGetExpWinVer function
into win32ss/user/rtl/image.c.
- Add RtlGetExpWinVer prototype
into win32ss/include/ntuser.h.
- Delete RtlGetExpWinVer
definition in
win32ss/user/user32/windows/window.c.
- Populate THREADINFO.dwExpWinVer
and CLIENTINFO.dwExpWinVer
by using RtlGetExpWinVer in
InitThreadCallback function.
Fixes a bug in Midori 0.5.11 installer which caused bad rendering
that was making the text hard to read (no background).
In Windows it's visible as FillRect(0x89011a1f, 0x0019f87c, 0xabababab),
and in ReactOS as SetBkMode(0xb5010fce, -1546139919).
After a number of attempts to get the same behavior, I haven't found a way
to fix it without a hack to make the installer look identical to Windows.
At least I added handling for the incorrect value in SetBkMode.
This shouldn't matter anywhere. It may not look the same as on Windows,
but the text will at least be readable.
- When the address-bar asks for FORADDRESSBAR, that should prioritized over FORPARSING.
- DefView should not enter special status-bar mode when viewing the Desktop as a shell folder in the normal IShellBrowser (DefView in Progman/desktop continues to use the old mode).
The drive property sheet was modal,
so it used to lock the main thread.
This PR will unlock by using another
thread.
JIRA issue: CORE-4217
JIRA issue: CORE-11547
In dll/win32/shell32/dialogs/drive.cpp:
- Add DRIVE_PROP_DATA structure.
- Call SHCreateThread function in
SH_ShowDriveProperties function.
- Clean up the data when they should
be released.
Strip unneeded WM_TIMER and a tab-character before toggle_child
Just clean up and
and addendum to 0.4.15-dev-7915-g d383b20b01
where the WM_TIMER has also been stripped from childwnd.c
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Co-authored-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Reduce system freezing on Win+D.
Normal minimizing causes message
transfer. If the window was hanging,
then it fell into endless message loop.
JIRA issue: CORE-19673
Since my machine performance
became lower, we have to adjust
timeout to get correct pattern of
user32!TileWindows function.
JIRA issue: CORE-19674
Adjust timeout value in QuerySizeFix
function.
* improve some accels in consistency to en-US (we are free to change them in rapps to our hearts desire, because there is no MS rapps), in general:
where nothing speaks against use &B for ID_RESETDB, because &t looks poor with Tahoma
where nothing speaks against use &E for ID_REGREMOVE (because &R is often used for &Refresh and tends to collide)
where nothing speaks against use &R for ID_REFRESH
where nothing speaks against use &I for ID_INSTALL
where nothing speaks against use &U for ID_UNINSTALL
where nothing speaks against use &M for ID_MODIFY
* Fix some accelerator collisions:
* en-US.rc: fix an accelerator collision between "&Refresh" and "&Remove from Registry" in 2 menus
* et-EE.rc: Fix accel collision between "&Desinstalli" and ""Uuenda an&dmebaasi"
* hu-HU.rc: Fix an existing accel collision between "&Telepítés" and "Ada&tbázis frissítése", by using the english accelerator for the ID_INSTALL for best consistency
* pl-PL.rc: Fix an accel collision between "&Plik" and "&Programmi", stick with the english accels for uninstall and "remove from registry" for consistency.
* pt-BR.rc: Fix an accel collision between "A&tualizar" and "Update Da&tabase", stick with the english accel also for "R&emover do Registro" for consistency.
* pt-PT.rc: Fix an inconsistency between "&Instalar" and "I&nstalar" between 2 menus, which is not only unintuitive, but also will hurt string pooling. Other changes are for consistency to en-US.
* ru-RU.rc: Reduce inconsistency between the 2 ID_INSTALL in 2 different menus, this will help string-pooling. It will also avoid defining "&Установить" next to "&Удалить" in the same dlg, although that might not be necessarily a collision here, as I am not sure whether Install/Uninstall is even both displayed as activated at the same time. Still better like that.
* sv-SE.rc: Fix accel collision between "&Ta bort från Registret" and "Update Da&tabase", the rest is for improving consistency to en-US
* tr-TR.rc: Fix inconsistency in the accels between "Uyg&ulama" and "Uy&gulama", as that will hurt string-pooling. Use "Uygulama Veri &Tabanını Yenile\tCtrl+F5" for both menus instead. That's the english accel also.
* uk-UA.rc: Fix accel inconsistency between the 2 menus for ID_UNINSTALL. This will help with string-pooling.
* uk-UA.rc: Use "Вида&лити з реєстру" in both menus for ID_REGREMOVE, because that will help with string pooling and improves user experience
* ja-JP.rc: Fix accel collision between "レジストリから削除(&R)" ID_REGREMOVE and "更新(&R)" ID_REFRESH in both menus, also this syncs the accels to en-US. Also add an accel for ID_ABOUT, just because I am friendly.
* A bunch of accel-changes for the sole purpose of matching en-US more closely. Those are only really important for the 3 chinese languages which always aim to follow en-US accels to the point, and for zh-TW that stuff was unintentionally offsync also between their 2 ID_RESETDB in the different menus. For all other languages this is just a nice addition for consistency to en-US. But no absolute must-have.
* The small &t within "Da&tabase" renders poorly in Tahoma because it is a very small-in-x-letter. By using &b in majority of languages, same as ru-RU and pt-BR.rc did already, we can make that look much better. I checked that this will not cause any new collisions.
* fr-FR.rc: Hermes' feedback: A french extrawurst for ID_REGREMOVE doesn't hurt me at all.
* de-DE.rc: Avoid accels of the kind &Ä &Ö &Ü. They are not wrong strictly speaking, but they are suboptimal.
* Strip some comments from sk-SK
* Strip some whitespace from ja-JP
The ampersand (&) a.k.a. prefix of
DrawText are specially treated for
adding underscores.
We have to fix drawing on toolbar
button with BTNS_NOPREFIX style.
JIRA issue: CORE-11619
- Delete DT flags hack in taskswnd.cpp.
- Add TOOLBAR_GetButtonDTFlags
helper function.
- Extend TOOLBAR_DrawString
parameters for the button info.
- Fix DrawText flags for drawing
when the button has
BTNS_NOPREFIX style.
These settings are cached per-process (and invalidated by the global counter). This should reduce the number of registry reads performed by DefView and CFSFolder.
Reduce log spams that @julenuri reported.
JIRA issue: CORE-19268
- Use Imm32IsCrossThreadAccess
instead of IS_CROSS_THREAD_HIMC in
ImmSetCompositionWindow function.
- Reduce ERR logging in
NtUserQueryInputContext function.
Fix file association UX.
JIRA issue: CORE-19670
- Check the return value of
shell32!SHOpenWithDialog function.
- If changed, then update the UI display
and internal data.
- Use OAIF_FORCE_REGISTRATION flag.
Fix wrong MAKEINTRESOURCEW() macro usage cases in LoadCursorW() system-wide.
MSDN documentation for this function states we need to use MAKEINTRESOURCEW() macro only for internal application-defined cursors (loaded from the app instance specified by hInstance parameter), but not for system-defined cursors (those begin with IDC_* prefix), in case when hInstance is NULL.
So get rid from MAKEINTRESOURCEW() macro usage for all cases when hInstance parameter is NULL. And on the contrary, when hInstance is valid and points to the application instance, then use it for the resource identifier.
The idea is reminiscent of the SetupCommitFileQueue() function:
filesystem volume operations are "queued" and processed via a
"commit queue".
The commit queue uses a user-specified callback, that is used to
interact with the user whenever an operation (filesystem formatting,
checking) is started, ended, or fails, for example by displaying
appropriate UI screens and choices, etc.
If East Asian people were unable
to see the Latin characters, it
becomes a barrier to mutual
understanding.
FontLink will break that barrier.
JIRA issue: CORE-9616
JIRA issue: CORE-15480
- Modify font substitutes.
- Unify the lock variables.
- Add FONTLINK and
FONTLINK_CHAIN structures.
- Add FontLink_Create and
FontLink_Destroy functions.
- Add FontLink_Chain_Init,
FontLink_Chain_Free,
FontLink_Chain_LoadReg,
FontLink_Chain_Populate, and
FontLink_Chain_FindGlyph
functions.
- Implement FontLink.
- Add font file DroidSansFallback.ttf
for LiveCD.
Improve font file micross.ttf for better
compatibility.
Eliminate blurry font rendering.
JIRA issue: N/A
- Edit the font file with FontForge.
- Improve vector glyphs.
- Add 8px, 9px, 10px, 11px, 12px,
and 13px bitmap glyphs.
- Cover English alphabet, digits,
French, German, Cyrillic, and
Greek characters.
Version: 3
License: SIL Open Font License, Version 1.1
1. MountMgrMountedDeviceArrival():
Fix the conditions under which the device's online notifications
are skipped (SkipNotifications == TRUE) and fix the code comments.
Now, things make much more sense:
online notifications are skipped when the device is already offline
or is a legacy (NT <= 4) fault-tolerant volume (see point 2 below),
or is NOT mounted (doesn't have a drive letter).
Previously, we were sending an online notification if the device
was NOT mounted (why?!...) or if it was deemed as "valid" (wrongly
determined, see point 2 below).
2. QueryDeviceInformation():
* The usage of the "Valid" parameter didn't make much sense. Indeed,
when a partition/volume device is reported to the Mount Manager,
it's already valid. (Also, setting "Valid" to TRUE only in the case
of an MBR partition while ignoring GPT ones, and resetting it to
FALSE if IOCTL_STORAGE_GET_DEVICE_NUMBER returned success, pointed
to something incorrect was going on.)
Instead, what we are checking here is whether the device is a
legacy fault-tolerant volume: such volume can only reside on an
MBR disk, have the expected partition type, and does not really
reside on a specific storage device (hence the check for
IOCTL_STORAGE_GET_DEVICE_NUMBER returning failure).
* Take also the opportunity to SAL2-ify the function.
This "NoAutoMount" member was not consistently used. Sometimes it was
used correctly, some other times it was used as "not NoAutoMount" i.e.
"AutoMount" enabled.
Fix this consistently throughout the source, and fix also some comments.
- Sync translations of the same menu items in MENU_002 and MENU_003.
- Add missing accelerators.
- Also fix colliding accelerators/mnemonic keys where possible.
CORE-19243
- IShellExtInit cannot rely on a folder PIDL being present
- Use common QueryContextMenu function for both menu items
- Allow copy to the same folder
- Disable toolbar buttons when the selection is not valid
- Minor DefView cache enhancement and bugfixes
- Synchronize PARTITION_*** definitions between ntdddisk.h and winioctl.h
- Make IsFTPartition() macro definition more accurate with Win2003/Vista+
WDK definition. In particular, partition types that would conflict with
3rd-party ones are not present in this macro. (See comment in header
for more details.)
Simplify also its definition by factoring the common
((PartitionType) & PARTITION_NTFT)
piece.
- It can be recognized, in all DDK/WDK versions, that the first part of
the IsRecognizedPartition() macro definition is basically the definition
of IsFTPartition(). So, take this opportunity to simplify the definition
of IsRecognizedPartition() accordingly without losing any functionality.
Save/Restore the state of the ShellBrowser toolbar/addressbar/statusbar.
Windows shares the state of the Go button and the locked state between Explorer and Internet Explorer but the bar states are not shared.
Notes:
- Seems to fix CORE-17236.
- The stream layout does not match Windows so it uses a different name. The toolbar customize dialog needs to be fixed before it makes sense trying to save the toolbar state and the layout of other bands.
CORE-17236
See commits ebcf3cf38 and c9c6902f0 (PR #5837)
In addition, correctly set the type of extended partition being used,
depending on whether it is contained below or above the 1024-cylinder
boundary (tested on NT).
There were encoding problems due to non-
Unicode functions.
JIRA issue: CORE-19653
- Adapt _ILGetDrive, _ILGetExtension,
_ILGetFileAttributes, _ILGetFileDate,
_ILGetFileSize, and _ILGetFileType
functions to Unicode.
- Adapt SHELL_IsShortcut and
SHGetFileInfoW functions to Unicode.
- Delete useless _ILSimpleGetText
function.
Windows has all its network drivers inf files in 8.3.
This is an addendum to 0.4.15-dev-52-g 019f21ee1d
which moved us further away from our target.
The commit on its own was a good idea actually to get the inf into the drivers directory
and therefore simplifies adding and excluding drivers more locally (e.g. excluding works by
adding a single hashtag within the specific drivers CMakeLists.txt now).
But that cool feature doesn't require us to move away from our target.
For the record:
The historic netrtpnt.inf and netisa.inf (both 8.3) have been merged to
netne2000.inf (not 8.3) by 0.4.15-dev-2763-g 6924b8ff39
Unification of that was cool too,
but again: 8.3 is superior. Therefore netne.inf for that.
Worst of all: Since the .inf files did contain their filename within a comment also, that means
the historic renaming by the mentioned commit invalidated that comment.
netamd.inf fixed by restoring the ancient filename before 0.4.15-dev-52-g 019f21ee1d
netrtl.inf fixed by restoring the ancient filename before 0.4.15-dev-52-g 019f21ee1d
netne.inf I fixed the comment manually.
CORE-16499
Addendum to commit 0a0e6a9f0 that introduced the problem.
Thanks to Hervé Poussineau for having caught it.
Fixes logic errors, and resulting compilation warnings/errors with GCC
in situations like the following one:
```c
if ((PartitionInfo.PartitionStyle == PARTITION_STYLE_MBR) &&
IsFTPartition(PartitionInfo.Mbr.PartitionType))
{ ... }
```
error: suggest parentheses around '&&' within '||' [-Werror=parentheses]
if ((PartitionInfo.PartitionStyle == PARTITION_STYLE_MBR) &&
cc1: all warnings being treated as errors
Retrial of #3818.
JIRA issue: CORE-16435
The font name is "Microsoft Sans Serif". This font is not Microsoft's font.
This font was not a solution of CORE-16435 but we add this font as a side
product of CORE-16435.
- Add media/fonts/micross.ttf as "Microsoft Sans Serif" font.
- The font height is 14%-shrinked from #3818.
- Add media/fonts/doc/MicrosoftSansSerif/LICENSE_OFL.txt.
- Modify CMakeLists.txt to add the font.
- Improve "J" and "Q".
Version: 3
License: SIL Open Font License 1.1
Reverts #6551
This caused the non-English programs menu
items to not be populated.
JIRA issue: CORE-12328 will have to be
reopened afterwards and approached
differently
JIRA issue: CORE-19652 will get resolved
This is the network driver which is used for MSVPC 2007.
I spotted it during a WIP-backport-experiment of the driver, when compiling with GCC4.7.2, which warned about it.
GCC8.4.0 unfortunately is blind to that on master head, for unknown reasons. Not good.
MSVC github buildbot is also blind to that on master head, for unknown reasons. Not good.
We later found that at least Clang did also warn about it on master head.
winioctl.h:
- Re-organize definitions according to the
NT DDK headers they have been taken from.
- Add missing include guards to some definitions.
- Add missing IsFTPartition() macro.
- Add missing volume definitions.
ntddvol.h:
- Guard definitions duplicated in winioctl.h.
- Add missing NTDDI_VERSION checks.
Note: IOCTL_VOLUME_POST_ONLINE is Win8+.
Our Tahoma font file had a workaround
to make bitmap glyphs working.
This workaround is no more necessary
because new FontForge doesn't have
this bug.
JIRA issue: CORE-9616
- Remove 「いうかひのん」 workaround
(See http://www.electronicdissonance.com/2010/01/raster-fonts-in-visual-studio-2010.html ).
- Remove Traditional Chinese codepage.
Version 0.020 khmz.
Fix IOCTL_MOUNTDEV_LINK_CREATED, IOCTL_MOUNTDEV_LINK_DELETED,
IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY, to Win2k3+ compatible definitions.
The previous versions of these IOCTLs (in Win2000 and XP) were defined without any access protection.
This was noticed here:
https://community.osr.com/t/ioctl-mountdev-link-created-definition-changed/29428
CORE-15575
In addition, fix a PartitionId assignment copy-paste error in PartitionCreateDevice().
The returned standard UniqueId has the following format:
- Basic volume on MBR disk: disk Mbr.Signature + partition StartingOffset (length: 0x0C)
- Basic volume on GPT disk: "DMIO:ID:" + Gpt.PartitionGuid (length: 0x18)
- Volume on Basic disk (NT <= 4): 8-byte FTDisk identifier (length: 0x08)
- Volume on Dynamic disk (NT 5+): "DMIO:ID:" + dmio VolumeGuid (length: 0x18)
- Super-floppy (single-partition with StartingOffset == 0),
or Removable media: DiskInterfaceName.
- As fallback, we use the VolumeInterfaceName.
References:
- https://winreg-kb.readthedocs.io/en/latest/sources/system-keys/Mounted-devices.html
- https://stackoverflow.com/a/72787681/21852502
- Manual testing on Windows.
CORE-15575
Detect whether the disk is a "super-floppy", which is the name given
to partitionless disk having no MBR, with the unique partition volume
starting at sector offset zero and spanning the whole disk.
The name comes from the fact that at the partitioning level, the disk
"looks like" a large-capacity floppy disk.
This is typically how external removable (USB, ...) drives are
partitioned by default by Windows.
https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-and-gpt-faq?view=windows-11#superfloppy
The kernel-mode functions IoReadPartitionTable() / IoWritePartitionTable()
report the drive layout of a "super-floppy" disk as follows:
an MBR-style disk containing only one single partition starting at the
beginning of the disk (StartingOffset == 0) without hidden sectors, and
its type being FAT16 non-bootable.
The disk NTFT signature is set to 0x00000001.
----
Additional bug fixes to make the feature work reliably:
- Make PartMgrGetDriveLayout() also update the FDO DiskData's
PartitionStyle and Signature/GPT DiskId for consistency (code moved
from PartMgrRefreshDiskData()).
- In FdoIoctlDiskSetDriveLayout[Ex](), if the disk is "super-floppy",
but the user wants to create more than one partition, fail the call.
(In the Ex call, fail also if the partition style changes.)
warning C4267: 'function': conversion from 'size_t' to 'ULONG', possible loss of data'
The OutputBufferLength member that was temporarily stored in
outBufferLength is already a ULONG, and IssueSyncIoControlRequest()
takes the length as a ULONG. So there is no need to use 'size_t' here.
Move SRW and condition variable definitions out of kernel32_vista and into the NDK.
Essentially grabbed from PR #1190
Trying to reduce diff needed for Rtl/ntdll sync.
- Implement IOCTL_VOLUME_QUERY_VOLUME_NUMBER:
See usage example in:
7241cebfa2/mayfield/branches/spr/src/umapps/ndassvc/service/drivematch.cpp (L627)
- Stubplement IOCTL_VOLUME_IS_PARTITION:
The only type of volume we support right now is disk partition
so we just return success. A more robust algorithm would be
to check whether the volume has only one single extent, that
covers the whole partition on which it lies upon. If this is
not the case, return STATUS_UNSUCCESSFUL instead.
I have edited some traslation files for the italian language, as the text
looked robotic in the way senteces were written, or in some cases it used
not-really-fitting synonymous or incorrect spelling. The edited strings
are from varius areas of ReactOS. I hope this contribution makes italian
language less strange to native speakers.
- [ACCESS] Improve Italian (it-IT) translation
- [DESK] Improve Italian (it-IT) translation
- [JOY] Improve Italian (it-IT) translation
- [MAIN] Improve Italian (it-IT) translation
- [SYSDM] Improve Italian (it-IT) translation
- [TIMEDATE] Improve Italian (it-IT) translation
- [ACPPAGE] Improve Italian (it-IT) translation
- [DESKADP] Improve Italian (it-IT) translation
- [DEVCPUX] Add Italian (it-IT) translation
- [FONTEXT] Improve Italian (it-IT) translation
- [ZIPFLDR] Improve Italian (it-IT) translation
- [BROWSEUI] Improve Italian (it-IT) translation
- [USER32] Improve Italian (it-IT) translation
- [CONSRV] Improve Italian (it-IT) translation
- [USERSRV] Improve Italian (it-IT) translation
Reviewed-by: Joachim Henze <joachim.henze@reactos.org>
Reviewed-by: Simone Mario Lombardo <me@simonelombardo.com>
- Fix small race between CreateMutex and CMainWindow creating the window, and another instance getting NULL from FindWindow.
- If the existing window is minimized, it should be restored.
Follow-up to #6929.
Latin accented characters will be able to
be mixed in East Asian text by FontLink
framework in the future.
JIRA issue: CORE-9616
- Modify boot/bootdata/hivesft.inf.
- Add "tahoma.ttf,Tahoma" entry to
Asian FontLink registry values.
Do the same in add_idl_reg_script() (currently unused helper) as well.
This is an addendum to commit b587e7b32, where the removal of the
IDL_FILE_FULL variable definition, broke dependency tracking with
the DEPENDS option. Now we use the correct variable.
The problem was caught after doing a partial (non-clean) build after
commit 0d10fb814. In this commit, two new interfaces, IExecuteCommand
and IObjectWithSelection, were added in the psdk/shobjidl.idl file
and used elsewhere. Recompilation correctly regenerated the corresponding
header, psdk/shobjidl.h, but did not trigger a regeneration of the uuid
static library (via the regeneration of sdk/lib/uuid/shobjidl_i.c),
due to broken dependency tracking on the shobjidl.idl file.
Because of this, the shobjidl_i.c did not contain the new GUID
definitions for these new interfaces, IID_IExecuteCommand and
IID_IObjectWithSelection, and triggered linking errors for the
com_apitest, actxprxy and shell32 modules:
```
error LNK2001: unresolved external symbol _IID_IExecuteCommand
error LNK2001: unresolved external symbol _IID_IObjectWithSelection
fatal error LNK1120: 2 unresolved externals
```
Add user32_vista.dll to introduce new NT6+ User32 features without changing the existing User32.dll when compiled as NT5.x. Also implements a stub for GetDpiForWindow(). The GetDpiForWindow() function will be required to Wine-sync common controls to modern Wine versions.
Changes:
Expose GetDpiForWindow() function and USER_DEFAULT_SCREEN_DPI to appropriate versions in winuser.h
Introduce a basic user32_vista library that can be expanded as needed.
and sync SAL2 annotations.
It didn't always warn in the past, our gutfeeling (we have *not* double-checked that thesis!) is that the warnings might have been triggered when 0.4.15-dev-958-g 237aa3a9c1 was committed
The PR #6649 which fixed an issue with orphaned KCBs leaking in memory which also pointed to unloaded registry hives, it also brought a problem.
In CmpEnumerateOpenSubKeys there is a risk of getting hit by a deadlock as we enumerate the cache table to remove empty cache entries.
Fundamentally CmpEnumerateOpenSubKeys locks down a KCB from cache for exclusive use in order to tear down its contents from memory but it doesn't address the fact a KCB might have already been locked in the same calling thread, leading to a recursion.
This leads to random hangs when unloading a hive during system startup (tipically on a clean install).
The solution here is to simply lock the whole registry when we unload a hive so that we don't have to worry the KCBs are getting tampered by anybody else. This also simplifies the code.
Although locking the entire registry while other apps are doing registry related operations to other hives can cause overhead. If this turns out to be bad then we have to rethink the locking mechanism here.
CORE-19539
Add ReactOS change to use the same Decibel (dB) sound loudness range for Master Volume control as for WaveOut Volume Control.
This fixes incompatible volume level change scaling when changing the volume in Fox Audio Player 0.10.2 from Rapps and Winamp 2.95 with WaveOut output plugin.
Now it is identical to the one when using original AC97 driver from Windows XP/Server 2003.
CORE-14780
Implement volume level changing for Aux/MidiOut/WaveOut devices. It's represented the following WINMM functions:
- auxGetVolume,
- auxSetVolume,
- midiOutGetVolume,
- midiOutSetVolume,
- waveOutGetVolume,
- waveOutSetVolume,
which are calling the followind messages appropriately:
- AUXDM_GETVOLUME,
- AUXDM_SETVOLUME,
- MODM_GETVOLUME,
- MODM_SETVOLUME,
- WODM_GETVOLUME,
- WODM_SETVOLUME.
This fixes volume control for several 3rd-party programs (like Fox Audio Player 0.10.2 from Rapps, Winamp 2.95 with WaveOut plugin). However it does not fix changing the volume in system volume mixers (SndVol32, MMSys), since they are using their own functionality instead. They technically do the same things, but apart from the functions mentioned above.
CORE-14780
- all languages: Strip unintended accelerators for Cancel-buttons
- many languages: had accel collision between "&File"-menu and "&Favorites" menu. It must be "F&avrites" for those!
- de-DE: "&Wertname:" -> "&Name:" was done because this is what Windows does and to fix an accel collision between "&Wert" and "&Wertname"
- de-DE: use the same name for String, DWORD, MULTISTRING, EXPANDABLESTRING in all 3 dialogs (each of the 3 dlgs used different names before), which also fixes an accel collision between "&Schlüssel" and "&String"
- de-DE: structurally use "Sc&hlüssel", instead of mixed things
- de-DE: "&Trennen" -> "&Teilen" is what Windows does
- de-DE "&Ändern" -> "Än&dern" is what Windows does, and avoids accel at a special character
- de-DE "&Über" -> "Inf&o" is what Windows does, and avoids accel at a special character
- de-DE "S&chlüsselnamen kopieren" -> "Schlüsselnamen &kopieren" is to match another already existing "Schlüsselnamen &kopieren" in the file
- de-DE "A&lles auswählen" -> "Alles &markieren" is what Windows does
- all languages: fix 26x wrong capitalization for "Ms Shell Dlg" -> "MS Shell Dlg"
- use the correct fonts for some asian languages (font-size9) this was for 5 new dlgs from 0.4.15-dev'ing
- fix many accelerator collisions for many languages, or leave FIXMEs for them where I found it to be better for the native speakers to act on their own in the future
JIRA issue: none
* [UDFS] Clang: Fix a #pragma
'warning: unknown warning group '-Wstringop-overflow', ignored [-Wunknown-warning-option]'
Follow-up to 612b1f2e6 (0.4.15-dev-1129).
* [CREATESPEC] Clang: Fix a target_compile_options()
'warning: unknown warning option '-Wno-stringop-overflow'; did you mean '-Wno-shift-overflow'? [-Wunknown-warning-option]'
Addendum to 00ed72d7e (0.4.15-dev-1169).
* [MSVCRT_WINETEST] Clang*: Fix a target_compile_options()
'warning: unknown warning option '-Wno-stringop-truncation'; did you mean '-Wno-string-concatenation'? [-Wunknown-warning-option]'
Addendum to commits 00ed72d7e (0.4.15-dev-1169) then f155b9377 (0.4.15-dev-4612).
* [TELNET] Clang*: Fix a target_compile_options()
'warning: unknown warning option '-Wno-restrict' [-Wunknown-warning-option]'
Addendum to 447ef2aa4 (0.4.15-dev-4613).
Refresh the items in the tree-view
control of SHBrowseForFolderA/W
functions against change notifications.
JIRA issue: CORE-17340
- Add BrFolder_IsTreeItemInEnum and
BrFolder_TreeItemHasThisChild helper
functions.
- Add BrFolder_Refresh,
BrFolder_RefreshRecurse, and
BrFolder_UpdateItem functions to
refresh items.
- Call BrFolder_Refresh in
BrFolder_OnChangeEx function and on
keyboard F5 and Ctrl+R actions.
Check system integrity by explicitly
releasing the font engine.
JIRA issue: CORE-9616
- Use RTL_STATIC_LIST_HEAD against
g_FontListHead and
g_FontCacheListHead variables and
omit initialization of them.
- Implement FreeFontSupport function.
- Call FreeFontSupport in win32k!
DriverUnload function.
- Fix some usages of
CONTAINING_RECORD macro.
We set "LoadIMM" to zero in order to disable Cicero.
The name of "LoadIMM" is a brain-dead name. This name
means Cicero despite of its name (brain-dead).
They use a human-confusing name intentionally.
JIRA issue: CORE-19320
- Set HKLM\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\IMM:LoadIMM to 0.
- Add warning comments to the brain-dead name "LoadIMM".
There was a mistake of parameter value for NtUserGetThreadState
call in Imm32InquireIme function. This affected the logon process.
JIRA issue: CORE-19320
- Replace THREADSTATE_ISWINLOGON2 with THREADSTATE_ISWINLOGON in
NtUserGetThreadState call in Imm32InquireIme function.
- Rename THREADSTATE_ISWINLOGON2 as THREADSTATE_UNKNOWN_0x10.
- Adapt NtUserGetThreadState to this change.
We reduce our wallpapers in Release bundle.
Reduce the cost of downloading the release images.
See also: reactos/rapps-db#243
JIRA issue: CORE-19617
- Reduce some wallpapers (7 MB to 253 KB).
- Modify CMakeLists.txt to reduce wallpapers.
- Update ReadMe.txt.
- Add ReadMe.txt to reactos/Web/Wallpaper.
Follow-up to #6916. My Documents change notification was not working
due to this bug.
JIRA issue: CORE-19615
- Use _ILIsSpecialFolder for checking PIDLs.
- Simplify ILIsParentOrSpecialParent helper function.
- Add SFVM_FSNOTIFY, SFVM_QUERYFSNOTIFY, and SFVM_GETNOTIFY
callback calls.
This refactor decouples the previous assumption that the ListView column index is the same thing as the IShellFolder column index. By doing this, support for turning columns on or off becomes possible. The SHCOLSTATE_ONBYDEFAULT and SHCOLSTATE_HIDDEN flags are also respected.
I also fixes the "Arrange icons by" submenu.
CORE-18526
Refactoring. Simplify item insertion code.
JIRA issue: CORE-17340
- Remove pEnumIL member from BrItemData structure.
- Add BrFolder_GetChildrenEnum helper function.
- Remove IEnumIDList* argument from BrFolder_InsertItem and
BrFolder_Expand functions.
- Add BrFolder_OnOK function and use it.
Implementing missing folder view callbacks...
JIRA issue: CORE-19616
- Call SFVM_CANSELECTALL callback on FCIDM_SHVIEW_SELECTALL.
- If it returned S_FALSE, then do not select all.
Implementing missing folder view callbacks...
JIRA issue: CORE-19616
- Call _DoFolderViewCB on LVN_COLUMNCLICK.
- If it returned S_OK, then don't sort items.
Implementing missing folder view callbacks...
JIRA issue: CORE-19616
- In CDefView::InvokeContextMenuCommand,
call SFVM_GETCOMMANDDIR callback and
store the directory into
CMINVOKECOMMANDINFOEX structure.
New delivery method is better than old method
in performance. Now deletion notification
partially works.
JIRA issue: CORE-17340
- Specify (SHCNRF_ShellLevel |
SHCNRF_NewDelivery).
- Rewrite BrFolder_OnChange function and
add BrFolder_OnChangeEx helper function.
By correctly ordering the items of the dialog, the dialog can use auto focus.
JIRA issue: N/A
- Change the ordering of IDD_BROWSE_FOR_FOLDER dialog items.
- Remove SetFocus call.
Follow-up of #6909 (af03438). Fix assertions and exceptions of
CComPtr and CComHeapPtr.
JIRA issue: CORE-17340
- Don't use AddRef, Release, and Attach methods against CComPtr
template class. Simply use assignment.
- Fix the 3rd parameter of three IShellFolder::GetAttributesOf
method calls. It had referenced CHeapPtr::operator&.
Switching themes during initial setup broke at some point relatively recently - following said regression, selecting a theme simply has no effect at all. This fixes that.
Follow-up to #6898. These PIDLs shouldn't be
freed because they are not allocated by
CoTaskMemAlloc.
We should use PIDLs mainly in internal data
instead of physical paths for change
notifications.
JIRA issue: CORE-13950
JIRA issue: CORE-19612
- Re-implement SHGetRealIDL function.
- Translate child IDLs by using SHGetRealIDL.
- Use newly-defined pidl0Temp and pidl1Temp
for temporary creation.
- Improve ILIsParentOrSpecialParent function
without using SHGetPathFromIDListW function.
This export function is needed to implement
shell32!SHGetRealIDL function correctly.
JIRA issue: CORE-19278
- Implement IShellFolder_GetDisplayNameOf
function (This function is not inline function in
this case) with retry data.
- Add SFGDNO_RETRYALWAYS flag to
<shlwapi_undoc.h>.
- Add IShellFolderHelpers testcase.
As the commit title says, the point of registering a device interface with ACPI fans is to receive incoming PnP notifications of incoming ACPI fan drivers so that the power manager can connect to them by creating a power device policies dedicated to them during power manager initialization.
CORE-18969
Kill the zombie watchers for system
performance.
JIRA issue: CORE-13950
- Add HWND parameter to
CDirectoryWatcher::Create.
- Check whether the HWND is alive at
CDirectoryWatcher::IsDead.
- fixes the last text truncations we had in IDD_FOLDER_OPTIONS_GENERAL
- small tweaks otherwhere
- add some FIXMEs
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
IContextMenu (CDefaultContextMenu) only knows how to rename when its site is an IShellView. The tree must detect the rename operation and perform it in the TreeView instead.
Fixed a bug in the ListView that is triggered by activating DefView (to complete the rename): Just after DefView has been activated, the tree performs a navigation to the newly renamed folder, this causes DefView to be destroyed and in turn the ListView. The ListView tries to handle a selection change during destruction of the ListView and ends up accessing an invalid pointer.
CORE-19557
Addendum to #6517 (the rules) and
Addendum to #6657 (Andreis recent shell32 PR)
Following the rule:
1.) We use only the correct Romanian language diacritics.
This means using lowercase ţ instead of ț.
This means using lowercase ş instead of ș.
This means using uppercase Ş instead of Ș.
Some of XP/2k3sp2 fonts do lack ț and ș and Ș.
2.) Avoid the word "calculator" for the shutdown/logoff prompt (same as Andrei Miloiu did before in his PR at many locations).
Using "sistem" is fine, and using "computer" is fine.
3.) Harmonize some strings used for some FILEOPENDLG_FILTER.
TODO:
[] In a future PR we will have to do the same character replacements for the Shell folder path default values. This has to be done in sync with dll/win32/userenv/lang therefore I left them out here for now, for easier reviewability of those more delicate parts.
Explorer does not control the IDs used by CFSFolder::QueryContext menu and therefore cannot share its ID range with it. The range passed to CFSFolder::QueryContext also cannot start at 0 because CTrayWindow::TrackCtxMenu would interpret that as user cancel.
* [NTOS:MM] section.c: Remove unused functions
MiSetControlAreaSymbolsLoaded(),
MiLoadUserSymbols():
Added on 436edb2 (r60802). Never used.
MiSubsectionConsistent():
Added on cda03c0 (r57209). Never used.
MiGetFileObjectForSectionAddress():
Added on 635d9ca (r67810). Calls removed on 0dfd233 (r68123).
MiSetProtectionOnSection():
Added on 9f28638 (r56317). Never used.
Plus,
MmCreateArm3Section():
Add an UNIMPLEMENTED on a specific case.
* [NTOS:MM] section.c: Use static instead of NTAPI for local functions
Generic HANDLE type is vague and unreadable.
Declare a special handle type for recycle bin
items.
JIRA issue: CORE-19595
- Declare the HDELFILE handle by
DECLARE_HANDLE(HDELFILE);.
- Use HDELFILE instead of HANDLE for
deleted items.
Implementing missing features...
JIRA issue: CORE-19278
- Implement IShellFolder_GetDisplayNameOf,
IShellFolder_ParseDisplayName, and
IShellFolder_CompareIDs functions.
- Add them to <shlwapi_undoc.h>.
- Modify shlwapi.spec.
- Add some SHCIDS_... macros into shobjidl.idl.
- Provide a macro option
SHLWAPI_ISHELLFOLDER_HELPERS to
avoid conflict with <shobjidl.h>
IShellFolder_... inline functions. Ugly hack
but effective!
dll/win32/shell32/wine/brsfolder.c.
This file is too hard to read. Nobody reads.
And WineHQ doesn't show no progress
recently in this file. OUT OF DATE!
JIRA issue: CORE-17340
- Rewrite some SendMessageW code by
using TreeView_... macros.
- Add BrsFolder_GetDataFromItem helper
function and use it.
Improve checks in AlphaBlend and TransparentBlt functions: check whether DCSrc is of DCTYPE_INFO also, to fail in that case properly too.
Spotted by PVS-Studio analysis.
Reference: https://pvs-studio.com/en/blog/posts/cpp/1122/.
Follow-up to #6880. Fix access denial on
writing file "C:\freeldr.ini".
JIRA issue: CORE-19575
- Add FILE_SHARE_READ flag in CreateFileW
call.
- Use OPEN_ALWAYS instead of
CREATE_ALWAYS, and then explicitly use
SetEndOfFile function.
Fix access denial on writing file "C:\freeldr.ini".
JIRA issue: CORE-19575
- Add FILE_SHARE_READ flag and delete
FILE_SHARE_WRITE flag in CreateFileW call.
- Use OPEN_ALWAYS instead of
CREATE_ALWAYS, and then explicitly use
SetEndOfFile function.
Follow-up to #6871. Reduce indentation level.
JIRA issue: CORE-17482
In ShellExecuteExW, early check the structure
size and return on failure before
SHCoInitializeAnyApartment call.
Updating the statusbar on every LVN_ITEMCHANGED causes a massive delay when the number of changed items is large, very noticeable on Ctrl+A.
CORE-18663
DelRegEmpty exists to clean up "company" registry parent keys. If another application is writing to the key at the same time as we are gently trying to remove it, our uninstaller should ignore any errors.
This adds a hotkey (CTRL-S) which switches between the Normal and Small
modes of the Volume Control window (also seen in Windows XP).
CORE-17043
Signed-off-by: Connie Julie <alexnicolas155@yahoo.com>
Support GetControlWindow, ShowControlWindow and IsControlWindowShown for TREE and STATUS in the Shell Browser so DefView can set CMF_EXPLORE correctly.
* Remove a hardcoded copyright string and move into localizable resources.
* Remove the PROMPT environment variable from clean installs of ReactOS. By default, the command prompt uses $P$G (path + '>') as its prompt settings and does not require this environment variable. Clean installs of Windows Server 2003 do not include this environment variable either. I documented this environment variable in our wiki if anyone would like to set it on their own ReactOS installs.
* Remove the new line above the copyright notice when the information line is turned off.
CORE-16193, CORE-17031
With a single database line added to applications distributed as zip/cab allows rapps.exe to act as an installer that automatically extracts the files and creates a startmenu shortcut. It can also uninstall the extracted files (and optionally other files and registry entries created by the application).
CORE-19566
- Move IDC_NO_OVERWRITE right below IDC_OVERWRITE_OLDER_THAN;
- Remove WS_GROUP from IDC_NO_OVERWRITE, IDC_OVERWRITE_OLDER_THAN and IDC_UPDOWN_EVENTS_AGE.
CORE-19575
For the time being, don't add read-only attribute for ease of testing
and modifying files, but it won't always stay this way.
For example, Windows sets its boot.ini (as well as NTLDR, NTDETECT.COM
etc.) as read-only (+ hidden and system) during its 1st-stage setup.
2nd-stage setup makes some adjustments in boot.ini but doesn't restore
its read-only attribute.
Windows tools that can modify boot.ini (i.e. msconfig.exe, bootcfg.exe,
and sysdm.cpl) **ALL** know how to remove the read-only attribute for
modifying boot.ini, before restoring it if needed.
Patch by @I_Kill_Bugs
* [NTUSER] Fix double click on title bar icon not closing window
Improve MENU_TrackMenu handling.
Guilty commit:0.4.15-dev-7750-gc17a654 c17a6542ac
CORE-19492
Patch by @I_Kill_Bugs
Add condition into msgqueue along with filter testing to reject messages that are "NotForUs".
Also, do not set AcceptMessage to FALSE, but just keep msgDblClk and idSysPeek values and continue.
CORE-19487
CORE-19538
The BootDrive and BootPartition values are deprecated, and support
for them will soon be removed from FreeLoader.
Add an helper function to migrate these values during ReactOS
(re)installation / update.
Support emoji characters and minor characters.
JIRA issue: CORE-19030
NOTE: Not every emoji is supported yet (No ZWJ support). Surrogate pairs only.
NOTE: This feature only works if the appropriate font is selected.
- Add IS_HIGH_SURROGATE and
IS_LOW_SURROGATE macros.
- Add Utf32FromSurrogatePair helper function
to convert a surrogate pair to a UTF-32 code
point.
- Convert the surrogate pairs in the text in
TextIntGetTextExtentPoint, IntGetTextDisposition,
and IntExtTextOutW functions.
Slight performance improvement.
JIRA issue: CORE-15554
- Add bNoTransform variable.
- Check whether mat is identity matrix.
- If so, then don't do FT_Vector_Transform.
The support is so far enabled only for INI files (freeldr.ini, boot.ini).
May be subject to further improvements in the future.
Usage examples:
- When finding existing ReactOS or Windows installations, the boot store
should exist and is opened in read-only mode. Closing the boot store
doesn't store any temporary modifications made to it.
- When doing a clean installation, freeldr.ini is created in read-write
access.
- When installing with an existing freeldr.ini or boot.ini, they are
opened as existing files in read-write access.
Implement GetWavePosition API for both Legacy and MMixer modes.
[WDMAUD.DRV]
- Fix wrong I/O control code passed to DeviceIoControl for Legacy mode. Use IOCTL_GETPOS instead of IOCTL_OPEN_WDMAUD, to use the correct routine.
- Implement WdmAudGetWavePosition for MMixer mode, as it was completely unimplemented there. Call an appropiate MMixer routine and return back resulting wave position.
[WDMAUD]
- Implement WdmAudGetPostion routine, which is used by Legacy mode, and call the same MMixer routine from it too.
- Handle it in IOCTL_GETPOS I/O control request of dispatch routine.
[MMIXER]
- Implement MMixerGetWavePosition internal routine, which is called by both Legacy and MMixer modes, and does the actual work of retrieving playback position.
- Call an apporpriate KSPROPERTY_AUDIO_POSITION property from it, and return in the output resulting KSAUDIO_POSITION.PlayOffset member, which contains the current playback position offset, to be returned to the caller.
This fixes a failure retreiving the current audio playback position snd subsequent playing the audio data by several 3rd-party applications which are using this API (for example, some Gecko based browsers by @roytam1: Basilisk (Serpent) 52.9.0 IA-32 build, NewMoon 28.10.7 IA-32 build and KMeleon 76.5.3 Goanna engine).
CORE-19542
- QueryBootStoreOptions(): De-duplicate code.
- SetBootStoreOpt(): Respect the FieldsToChange flag.
- BOOT_STORE_OPTIONS: Remove unused Version field and distinguish
between "Current" and "Next" BootEntryKey.
The change is needed, because the previous version emitted multiple ".seh_handlerdata" blocks and GAS isn't able to merge them into one, but will instead only include the first one. This is fixed by generating "asm defines" in the code and pass the line number to the "REACTOS seh" pragma, which is then used to create all handler data by referring to the predefined symbols, that include the line number.
Also the EstablisherFrame parameter passed to the filter/finally function is the original stack pointer, not the frame pointer! Take this into account by passing __builtin_frame_address(0) from the filter context to the global wrapper function, which includes the frame-offset, and use that to recalculate the frame-pointer from the passed in stack pointer.
Slight performance improvement. STACK_TEXT_BUFFER_SIZE = 100 was too small
for long text. This PR can reduce unnecessary buffer allocations in NtGdiExtTextOutW
function.
JIRA issue: CORE-15554
- Change STACK_TEXT_BUFFER_SIZE to 512.
* [NTOS:EX] Various fixes for Daylight Saving Time transitions
* Fix automatic time changes when DST starts and ends.
* Currently it takes two cycles of the update provided by w32time to make the actual change.
* Convert Eric Kohl's TimeZoneID code contained in ExRefreshTimeZoneInformation to a new function.
* Use this new function in ExpSetTimeZoneInformation and ExRefreshTimeZoneInformation functions.
CORE-19290
Remove WS_GROUP from: IDC_TCP_RESTRICT, IDC_UDP_RESTRICT and IDC_IP_RESTRICT
fixes CORE-19569
Thanks to Maj Soklič for the PR, based on the investigations of Krosuser.
- If a section already exists, return the existing one. This allows
avoiding different section entries with the same name in the cache.
If an INI file has separate sections with the same name, their
contents (key-values) get merged into a unique section.
- If a key-value already exists, update its data value and return the
existing one. (Note that this may be subject to behaviour change in
the future.)
Follow-up to commit 24a14abf2 (r57412).
HBelusca's comment:
> If this ExFreePoolWithTag() call was left commented, it's probably
> because, back in the day where I introduced it, there was a pool
> corruption that was detected, the source of which was unknown at
> that time. In retrospect, it is most probably the interrupt disconnect
> bug in IoDisconnectInterrupt() that was causing it. Now that this
> bug has been fixed just previously, it should be safe to re-enable
> pool freeing with tag.
- Add two missing debugstr_w* helpers. These will be needed for
future winetest syncs.
Note that such change would be unnecessary, would wine/test.h and
wine/debug.h be also updated with latest Wine versions. Indeed,
wine/debug.h is now allowed to be included in wine tests since
wine commit:
```
include: Allow using debug.h in tests.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id c8f338369695d360e021f2cbd82a18b2c0eb1514 by Alexandre Julliard <julliard@winehq.org>
```
- Since our wine/test.h doesn't include wine/debug.h for now, include
instead stdio.h for the time being, in order to get support for
s(w)printf() in tests that don't include stdio.h
These defines assumed that the (v)swprintf functions were the
non-conformant ones (that don't take a 'count' 2nd parameter).
Because of that, use instead the _(v)swprintf functions. However,
those exist only in NT6+. Therefore, redefine these locally
using the _(v)snprintf functions.
NOTE: wine/unicode.h has been removed in wine commit
348eebae872e90a735041a153635d00b01178cfa from July 13, 2022
For preparing a backport I do slightly improve the formatting:
- for the 2 SetScrollInfo() calls, that I do intend to port back
- fix last place where we had mixed space and tab indentation in this file at the DefWindowProc signatures
- strip some exclamation marks in some dbg-prints
- improve the header
- strip a space at some rather long lines NtUserMessageCall()
Fix usage of left/right arrow keys in file deletion dialog
JIRA issue: CORE-19564
Remove WS_GROUP from all but the 1st button
"Inshallah brother we will fix this bug"
setlocale is coded to just return 'C' for all inquiries ignoring locale
that may be set in the environment.
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 9dc5d299f11c599862d39af3e32d92e787c1ae7b by Aric Stewart <aric@codeweavers.com>
Implementation and tests are based on GetSystemPreferredUILanguages.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id 26d0105cd8a8ce1131033f1871de0dd9a7b4c43c by Jacek Caban <jacek@codeweavers.com>
When IShellFolder::ParseDisplayName is asked to parse multiple path elements, the IFileSystemBindData (if any) only applies to the last item. The other elements are always folders.
ReleaseCComPtrExpectZero currently always prints the same line from shellutils.h in the warning which is not very useful. A macro is required for __FILE__ to be correct.
- Fix annotations
- Don't use KiServiceExit to return to the caller with an error code, instead just return from the function, that is the same thing.
- Refactor failure path
- Add DPRINTs on failure
- Implement KiExceptionExit, which works like KiServiceExit2, but takes an exception frame as 2nd parameter
- Add a local exception frame to NtRaiseException and NtContinue, which is needed to exit with a full context on x64 and arm
- Use KeContextToTrapFrame again instead of KiSetTrapContext, since we have a proper exception frame now.
* [NTOS:CC] Restore unlock and reacquire locks around MmPageOutPhysicalAddress which was mistakenly lost in commit 2b14056
* Add bypass for problematic code path for now
The changes are:
- Do not allocate an additional WCHAR for the terminating UNICODE_NULL, since we already have that accounted for by sizeof(manifest_dirW)
- Use strcpyW intead of memcpy / strlenW, which does the same thing
- Add a define for user_shared_data
The caller of IContextMenu::QueryContextMenu must set these flags when needed, not CDefaultContextMenu.
Notes:
- CMF_CANRENAME is always set by DefView because it always supports rename in its current form. CDefaultContextMenu verifies that SFGAO_CANRENAME is also set on the items. All other callers are expected to not know how to rename unless they also set CMF_CANRENAME. This fixes the bug that the Rename item is present in the TreeView context menu even though the TreeView in ROS Explorer does not handle renaming.
- While DefView now tries to set CMF_EXPLORE correctly, the flag is never actually set because BROWSEUI does not handle FCW_TREE yet.
- This also fixes the bug where the File menu is missing the menu items when there is no selection.
ExAllocatePoolWithTag doesn't raise an exception on failure, only ExAllocatePoolWithQuotaTag does. Use that when quotas are relevant instead of silently continuing with a NULL pointer.
This removes all fake apiset forwarders,
and handles apisets inside ntdll.
This is not 100% compatible with how windows does it, but it should be good enough for us.
This specifically fixes Wordpad's Open and SaveAs dialog toolbars.
* Fix 16 bpp BI_BITFIELDS like 32 bpp was done.
* Add BI_BITFIELDS byte count into bitmap_info_size return value.
* Account for GCC's windres.exe incorrect omission for BI_BITFIELDS DWORD's when processing 32-bpp bitmaps.
* Account for GCC's windres.exe failing with bitmaps with BI_BITFIELDS and bits per plane is 16
* Fix WARN message to show error on either 16-bpp or 32-bpp
* Correct comment regarding GCC compiled bitmaps with compression of BI_BITFIELD's to add 16 bits per plane
CORE-17005
Fixes COMCTL32 headers from being garbage text when resizing while drawn off screen.
- Invalidate header item rect before scrolling to prevent the divider from being redrawn over and over.
- Invalidate header item text through adding flag SW_INVALIDATE to ScrollWindowEx call to prevent the text from being redrawn over and over.
CORE-19404
* [MSVCRTEX] Only include _CrtDbgReport*, if we don't already export them
For some reason clang builds now want the ___chkstk_ms on x64 as well, so add it.
This commit makes Control_RunDLLW pass all but one tests from rostests (the one test that fails is the first one, but it only fails if the path to the test program contains a space).
- Rework string parsing in the Control_DoLaunch routine
- Do not send the CPL_STARTWPARMSW message, if no extra parameters were specified (fixes the failing Got NULL lParam2! and some CPL_STARTWPARMSW: expected -1 got %d tests)
- Do not resolve invalid dialog names to index zero, unless the name is empty (fixes some of the failing CPL_DBLCLK: expected -1 got %d tests)
- Handle quotes in the second part of wszCmd
CORE-8981
This is already done this way in our stdlib.h. It is needed by GCC 13 C++ headers. The problem happens like this:
- telnet/precomp.h includes fstream from GCC
- fstream includes pthread.h from GCC
- pthread.h includes process.h from ReactOS
- process.h defines _CRT_TERMINATE_DEFINED, but doesn't declare _Exit
- fstream includes cstdlib from GCC
- cstdlib includes stdlib.h from GCC (#include_next)
- stdlib.h doesn't declare _Exit, because _CRT_TERMINATE_DEFINED is defined
- cstdlib uses _Exit
* [SHELL32] Fix Desktop Folder Details View
JIRA issue: [CORE-19177|https://jira.reactos.org/browse/CORE-19177]
* Remove Comments column from Desktop Folder Details View and simplify code.
* Revise date/time sort based on reviewer comments.
* Swap size and type column positions for desktop folder details view.
With help from Whindmar, most (hopefully all) of the magic number for the columns
have been removed in all of the shell folders.
Co-authored-by: Whindmar Saksit <whindsaks@proton.me>
Co-authored-by: Carl J. Bialorucki <cbialo2@outlook.com>
Optimize for speed and memory.
JIRA issue: CORE-13950
CDirectoryList class exists just for remembering which file item is a directory or
not, in order to notify the filesystem item changes. This information can
become a tree data structure.
- Add CFSPathIterator and CFSNode helper classes.
- CFSNode is a class for tree nodes.
- Re-implement CDirectoryList class by using tree nodes.
- Delete CDirectoryItem class.
Fix playing wave header multiple times in case the caller requests to do it.
In Windows, it is supported by WHDR_BEGINLOOP and WHDR_ENDLOOP flags (specified together) and dwLoops member of WAVEHDR structure (ususally set to 0xFFFFFFFF (INFINITE constant)).
- Check whenther WHDR_BEGINLOOP | WHDR_ENDLOOP flags are set by the caller.
- If they are, get the amount of times to play the header from WAVEHDR.dwLoops.
- Perform wave header competion only when the loop count is equal to zero. Otherwise, don't do it.
- When the header is entirely committed, in case completion is not needed, reset committed bytes count to the starting value to allow the header play again.
- Decrement loop count in case it isn't set to INFINITE, to mark loop as played correctly. When this count becomes zero, then the playback is finished.
- Get rid from SOUND_OVERLAPPED.PerformCompletion member. Use SOUND_DEVICE_INSTANCE.LoopsRemaining == 0 condition instead.
- Do this only for WaveOut devices, since MSDN states it works only with output buffers. Hence, there is nothing changed for WaveIn.
- Update an appropriate statement about unimplemented functionality from mmebuddy notes.
TODO: handle the case when multiple headers are requested to be looped (WHDR_BEGINLOOP and WHDR_ENDLOOP are set separatedly: 1st flag - in the 1st header, and 2nd in the last header). Currently, only looping a single wave header is supported.
This fixes the playback in the apps those request looped wave playback of some audio data (e. g., BRD Demo app, which did play its sound only first 500 ms before, now it plays endlessly until closing it manually).
CORE-10118
Make the testcase more stable and faster. Reduce code.
JIRA issue: CORE-13950
- Use WM_COPYDATA message to communicate with shell32_apitest_sub.exe.
- Use concept of "stage" and "step".
- Do multiple checks in one step.
- Flush notification by using (SHCNF_FLUSH | SHCNF_FLUSHNOWAIT) flags.
- Don't wait 1 second for each processor
- Use AFFINITY_MASK
- Use Prcb->Number, which is more future proof than KeGetCurrentProcessorNumber
- Improve for loop
Implementing missing features...
JIRA issue: CORE-13950
- Add WM_DEVICECHANGE message handler in the shell window to detect
DBT_DEVICEARRIVAL and DBT_DEVICEREMOVECOMPLETE.
- Use GetLogicalDrives function to detect drives.
- Use SHChangeNotify to send SHCNE_DRIVEADD and
SHCNE_DRIVEREMOVED notifications.
- Modify CDefView::OnChangeNotify.
ShellExecute on a .zip file fails because the command in the registry
uses rundll32 that passes in an ANSI string, which is the default for
exported functions without a W suffix.
- This should also fix RAPPS not being able to open downloaded .zip files
- I made it use the full path to Explorer for good measure
Fixes regression introduced by 0.4.15-dev-6343-g bf2cec186c (#5411)
CORE-19506
And deprecate corresponding boot types "Drive" and "Partition".
These are replaced by the more general "BootSector" boot type.
Finish the unification of the code, started in commit ff85aa0c3,
that loads and boots disk MBR, partition VBR or boot sector in file.
A "WarnDeprecated()" helper is added to warn the user about the
deprecated features, and to inform them to adjust their FREELDR.INI
file in accordance.
In addition, bump FreeLoader version to 3.2 (at last!): a lot of
features have been added or deprecated since its last release.
Calculate size of the additinal data based on the format tag specified by the caller.
For PCM wave format, it should be zero, and for all others,
it should be taken from cbSize member of WAVEFORMATEX structure.
- Initialize data size for each format appropriately.
- Append it to the total pin connect allocation size, to allocate enough memory for it.
- Use it as additional data size for requested wave format.
- Append it to the total size of data format.
- Add SAL2 annotations for MMixerInitializeDataFormat function.
Fixes two crashes in winmm:capture and winmm:wave winetests, which have been introduced by 12b3272d9e.
So this is an addendum to that commit.
CORE-19514
[FREELDR] Add "WindowsVista" boot type
[FREELDR] Set GDT correctly for Vista
[FREELDR] Map first page of memory, this is an observed behavior, and
also increases stability boot Checked windows 2003 SP2 ntoskrnl with
freeloader.
[SDK] Don't assert on big keys in bootloader
Co-authored-by: Justin Miller <justin.miller@reactos.org>
CORE-19191
Reproduce the same behaviour of the calculator for Windows XP when an error condition is met.
When the result is NaN and it cannot be printed, the error condition is cleared by pressing the CLEAR button.
The code itself isn't wrong but we're entirely missing the logic needed
to make it work. This leads to spontaneous crashes with video drivers and
various unity games.
After a back and fourth investigation I've just decided to disable pdb generation for this ROSAPP for now.
We tried taking the code apart a bit and only building parts but alas it didnt yield any sucess.
disabling the AV also didn't help.
JIRA issue: CORE-19516
- Add ClampSplitBarX helper function to delete
duplicated code.
- Use a signed value in WM_LBUTTONUP handling.
- Use ClampSplitBarX in ResizeWnd function,
WM_LBUTTONDOWN, WM_MOUSEMOVE, and
WM_LBUTTONUP handling.
- UiMessageBox(): Enlarge the default buffer used to printf msgbox strings.
- TuiUpdateDateTime(): When displaying the time, don't pad too much
with spaces on the left.
- TuiDrawShadow():
* Pre-calculate whether we need to show the right/bottom shadows,
and whether the right-shadow has a double width.
* Cap the right and bottom upper-bound coordinates before looping,
in order to avoid buffer overflows if the given coordinates go
beyond the screen.
- TuiDrawMsgBoxCommon(): Improve how the message box centering
calculations are done:
* When the "full-UI" is used (and center-menu is used), try to
center the message box in the space between the header and
the status bar.
* Ensure the top-left box corner is inside the screen, in case
the calculated message box borders go off-screen.
- TuiCalcMenuBoxSize():
* Uniformize the way the menu box coordinates are calculated.
* Reduce the space between menu box margins and the longest item.
* Ensure the top-left menu corner is inside the screen, in case
the calculated menu box borders go off-screen.
A NULL pointer (not necessarily the terminating one) is a valid entry
in the Argv argument vector, according to the ARC specification
(Section 4.4 "Loaded-Program Conventions").
Thus, such pointer needs to be ignored when searching over the
argument vector.
Addendum to commits d05be0da3 and bd451f240.
This is required for POSIX compliance, which the ARC specification obeys.
See Section 2.1.2.2.1 (ANSI X3.159-1989) or 5.1.2.2.1 (ISO/IEC 9899:x)
"Program startup":
```
If they are declared, the parameters to the main function shall obey
the following constraints:
— The value of argc shall be nonnegative.
— argv[argc] shall be a null pointer.
[...]
```
See also https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
This saves a few bytes in the binary, e.g.
comdlg32.dll master 0.4.15-dev-7887-g64a59a1 RosBEWin2.2.2 GCC8.4.0 dbg x86 shrinks
from 1.011.712 bytes to 1.009.664 bytes.
Furthermore it syncs the translations at this line, because pt-PT.rc already applied such a tweak.
Co-authored-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
fixes CORE-18807 'Our explorer.exe ATL-asserts when executed on XPSP3'
which most likely got unhidden when we enabled the ATL-assertions in
0.4.15-dev-5023-g 55343f04b0
The registers that are saved/restored in the trap / exception frame need to be consistent between all entry/exit points as well as the functions that convert between trap/exception frame and context. The trap frame contains only the non-volatile registers and rbp, the rest is saved in the exception frame.
The previous code didn't save rbp in the syscall handler, which led to it being clobbered when exiting though KiServiceExit2 rather than returning back to the syscall exit path. Also KeContextToTrapFrame would use rbx, rsi and rdi from the trap frame, which wouldn't be saved there by the syscall handler.
This fixes invalid contexts being passed to RtlDispatchException. Also update the ExceptionAddress field in the EXCEPTION_FRAME, to match the Rip value in the CONTEXT, which is required for proper unwinding.
This saves a few bytes in the binary, e.g.
regedit.exe master 0.4.15-dev-7887-g64a59a1 RosBEWin2.2.2 GCC8.4.0 dbg x86 shrinks
from 1.049.600 bytes to 1.049.080 bytes.
Furthermore it syncs the translations at this line, because es-ES.rc even translated that identifier to "Lista1" already.
This prevents an issue where clicking on most of the icons on the desktop
that isn't the file explorer causes explorer to throw an exception,
and also prevents another issue where most applications won't launch from the start menu;
at least on MSVC builds running on VirtualBox 5.2.44.
^- I am pretty sure, that this was not always the case. The guilty rev is yet unknown though.
Follow-up to #6721. This PR can reduce 1KB of
binary size.
JIRA issue: CORE-19495
- Delete CStubFolderBase and derived classes.
- Add
CDesktopFolder::_ParseDisplayNameByParent
method.
- Don't use excessive IShellFolder objects in
parsing display names.
- Simplify and reduce code.
- For NT6.0+, NTDLL exports those hash APIs that ADVAPI32 thunks forward to
- Fix undocumented context structure layout and content
- Add apitests to verify both of hash result and structure content
Add a check so that mouse move messages are not generated unless
the mouse cursor X or Y position is changed.
This fixes extra mouse moves generated when clicking.
Patch by I_Kill_Bugs.
CORE-8394 CORE-18529 CORE-19422 CORE-19423
The it-IT.rc thingy I spotted when I wanted to port back the regedit-changes from
0.4.15-dev-6592-g 995d255962
The line definitely got improved by that commit, but it was still inferior.
In the other 3 langs it is just some stuff where master head is inferior to older branches,
I spotted them while porting back other things.
So I placed the FIXMEs to protect myself from porting it back accidentally,
and to help the native speakers with seeing them on master head.
The tr-TR.rc: "D&izi Değeri" -> "D&ize Değeri" was done for consistency, because we do have
that item 3 times, and 2 of them were using "D&ize Değeri" already.
[MMIXER] Implement hadling WAVE_FORMAT_EXTENSIBLE audio format
Fix opening audio device error when trying to open it with WAVE_FORMAT_EXTENSIBLE format tag set in wFormatTag member of WAVEFORMATEX:
- Pass additional data size from WAVEFORMATEX.cbSize to pin data format.
- Append it to the whole size of pin data format (KSDATAFORMAT.FormatSize).
- Set additional fields in WAVEFORMATEXTENSIBLE structure (data format, BPS and channel mask) when WAVE_FORMAT_EXTENSIBLE is used. They are used by our inbuilt Intel AC97 miniport driver at least. It simply fails when these members are not set.
- Fix pin connect allocation size by appending an additional data size from WAVEFORMATEX.cbSize to KSPIN_CONNECT + KSDATAFORMAT + WAVEFORMATEX. This allows to proerly initialize additional extensible data and avoids kernel memory leakage when using extensible audio format.
- Remove format tag check which allowed WAVE_FORMAT_PCM to be opened correctly. So now all possible audio formats can be opened properly at least (although it does not mean they may work correctly).
This fixes the audio playback for all apps those are supporting extensible audio data and use it by default (e. g. AIMP 5.30, QMMP 0.12.17, all Chrome/Chromium-based browsers, GameDev Tycoon Demo game etc.).
CORE-10907, CORE-14783
* [KS] Allow passing additional extensible audio data when extensible audio format is used
- Append additional data size from WAVEFORMATEX.cbSize to pin connect size passed to KsCreatePin. If the tag is WAVE_FORMAT_PCM, then this member should always be zero. So in that case, no any additional data is passed to creation request, and the passed data size is correct for PCM too (KSDATAFORMAT + WAVEFORMATEX).
This fixes audio playback in several apps those are supporting extensibble audio and use it by default (e. g. AIMP 5.30, QMMP 0.12.17, all Chrome/Chromium based browsers, GameDev Tycoon Demo game etc.).
CORE-10907, CORE-14783.
* [WDMAUD.DRV] Pass the correct additional data size to I/O control request
Store a correct size of additional data in WAVEFORMATEX.cbSize when performing open of audio device, when WAVE_FORMAT_EXTENSIBLE audio format is used.
It allows to properly open audio device with Legacy APIs enabled too.
This fixes audio playback in several apps those are using extensible audio data (e. g. AIMP 5.30, QMMP 0.12.17, all Chrome/Chromium based browsers, GameDevTycoon Demo game etc.).
CORE-10907, CORE-14783
First an foremost this fixes "the copies-icon in the print-dlg not showing" for Taiwan as well.
That part is an addendum to 0.4.15-dev-3493-g a36cc8054d (#2831)
Taiwan is untypically placed in cdlg_Zh.rc as well for comdlg, next to the traditional chinese version and therefore was forgotten.
Furthermore improve many translations a little bit, where strings could be stolen from neighbor controls. This part focuses mostly on the NEWFILEOPENV2ORD.
Then add many FIXMEs for existing accelerator collisions, many of them were introduced by adding the "Help"-button retrospectively, when other translations existed already. Let the native speakers handle them later.
Strip accelerators from some "Cancel" buttons, e.g. in cdlg_Pt.rc, and the "Save as" button, e.g. within cdlg_Es.rc as those should not exist, which most languages did properly respect already.
Also fix a few text truncations and a few accelerators, e.g. for de-DE: stc3 was cutoff, and "Öffnen" had the wrong accelerator.
This replaces the usage of FIELD_OFFSET for dynamic indexing into array fields.
Sadly GCC has broken __builtin_offsetof and they don't seem to intend to fix it.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95942
We need to save the missing registers in the trap frame before calling KiInitiateUserApc, because they will be used to create the CONTEXT that is saved on the user mode stack, where KiUserApcDispatcher returns back to using NtContinue. This fixes remaining failures in kernel32_apitest QueueUserAPC.
Both due-times and interrupt time are unsigned, but were treated as signed in KiInsertTimerTable, which led to very long (e.g. INFINITE) waits being interpreted as having a negative due-time and being completed instantly.
Mostly fixes kernel32_apitest QueueUserAPC
This is used in KiUserModeCallout instead of KiServiceExit2. The latter is broken, leaks non-volatile registers and will need to be modified to handle an exception frame, which we don't need/have here. It will also use sysret instead of iret and is generally simpler/faster.
Eventually it would be desirable to skip the entire trap frame setup and do everything in KiCallUserMode. This requires some cleanup and special handling for user APC delivery.
Fixes CORE-19505 'game "Hover!" from rapps does not start anymore'
It failed showing a msgbox
"There was an error allocating memory in Hover!"
the regression was introduced by
0.4.15-dev-5602-g c47506a5f4
Add missing heap initialization in DllMain entrypoints of msvcrt20.dll and msvcrt40.dll,
similarly to as it is done in msvcrt.dll (CRT).
The msvcrt.dll (CRT) initialization code was updated properly
during the last winesync, accordingly to the new changes,
but msvcrt20.dll/msvcrt40.dll one was not. So update it too.
This fixes the crash of HOVER 1.0 game from Rapps when
it tries to allocate a dynamical memory from the
unitialized heap via malloc() function exported from our msvcrt20.dll.
This is intentionally not part of ntdll_apitest, because that links to advapi32, which links to rpcrt4, which (wrongly!) links to ws2_32, which (wrongly!) links to user32, which breaks the test.
This fixes CORE-19497 'Regression, part of the statusbar with the sizegrip is not redrawn properly'
The regression was introduced / unhidden by 0.4.15-dev-5617-g 7866eb2886
Author of the patch: JIRA-user: I_Kill_Bugs
turned into PR by @Doug-Lyons
Thank you both!
KVM: https://reactos.org/testman/compare.php?ids=94433,94435
VBox: Builder Broken atm unfortunately
This can fail on optimized builds, where functions can end after a noreturn function call without an epilog / ret, but with an int 3. We simply fail gracefully, which is the right thing to do.
This also fixes delivering APCs from the system call handler, which previously would have clobbered rax. Also don't use the thread's TrapFrame member, which is not always set, when returning.
CORE-17256
- Implement support for complex input buffers.
This will enable the IDE driver with some hack
to execute the _STM (channel timing settings) control method.
- Fix a memory leak.
- Fix returned status code.
- Correctly calculate the output buffer size.
- Improve buffer validation.
- Implement support for async control requests.
- Implement local reference conversion.
- Implement support for subpackage argument conversion.
- Place some code into INIT section.
This is needed, because KiSystemCallHandler can be called multiple times for the same syscall entry, which would mess up the linkage. This replaces a previous hack and makes things cleaner.
In case of failure, ObInsertObject itself dereferences the object, so calling ObDereferenceObject one more time in the failure handler is redundant.
- Remove ObDereferenceObject call from CmpCreateRegistryRoot in case ObInsertObject fails.
- Add missing RootKey dereference if CmpCreateRegistryRoot failed to get the key cell (KeyCell).
CORE-17904
- Implement `GetFirmwareType` and improve existing API test for it
- Move (Get/Set)FirmwareEnvironmentVariableEx(A/W) to kernel32_vista_static and export them when NT version >= 6.2
Addendum to 4c8a2a8815. CORE-11954
Follow-up to #6635. The directory search without this flag didn't work.
JIRA issue: CORE-19493
- Add PRF_FIRSTDIRDEF flag for PathResolveW call.
- Delete needless macro definitions in PathQualifyExW.
- Remove an assertion in IsLFNDriveW.
- Fix shell32_apitest:FindExecutable testcase.
- Use an index for the table instead of ugly pointer offset
- Invert the check for GUI calls
- Fail with proper status code on invalid win32k syscall ids
This is not intended to fix any specific bug. It is just meant for cleanup.
No noticable change in behavior at runtime.
Some rcs had 7 of those, some only 6. So this will also slightly improve sync between the rcs.
This is required since while interrupts are enabled, another user APC could get queued and we want to guarantee that those are all delivered before returning to user mode.
- This removes an ancient polish-only workaround/extrawurst of 0.4.13-dev-1171-g c81af08 which made the dialog bigger than allowed in y, and which reduced its usability on small monitor resolution.
- Sync the dialogs dimensions back to en-US and all other localizations. Notice also that both dialogs have the same height again afterwards.
- Maximizes the available space for the dynamic parts of the dialog on the right side. Historically even 160 turned out to be too short for that, e.g. EDITTEXT 14009, the dynamic part of "Lokalizacja:". and also EDITTEXT 14007, the dynamic part of "Program:". Therefore we used 170 everywhere for those widths in all other languages. But due to the polish workaround it was crippled to 155 here. Not good!
- Notice also how now the leftmost checkboxes position of the Attributes is perfectly aligned with the other dynamic content of that column above after the fix. This will be important in the future when we will restore the vertical layout of Attribute-checkboxes in both dlgs (Plik vs. checkbox, and Katalog vs. checkbox) to match 2k3sp2
---------
Co-authored-by: Adam Słaboń <asaillen@protonmail.com>
The MSVC toolset will increment its minor version number from 19.39 (VS 2022 v17.9) to 19.40 (VS 2022 v17.10). The MSVC toolset will be version 19.40.33521.0 in the preview 1 release. For more details, see the MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10 blog post: https://aka.ms/msvc-ver14.40
Follow-up to #6656. An approach to
implement ShellExecuteEx correctly.
JIRA issue: CORE-19493
- Rewrite code by using AssocQueryStringW
and PathResolveW functions.
2024-03-27 17:04:49 +09:00
4755 changed files with 392338 additions and 125764 deletions
<imgalt="Follow on Twitter"src="https://img.shields.io/twitter/follow/reactos.svg?style=social&label=Follow%20%40reactos">
</a>
<imgalt="Follow on Twitter"src="https://img.shields.io/twitter/follow/reactos.svg?style=social&label=Follow%20%40reactos"></a>
</p>
## Quick Links
@@ -56,7 +50,7 @@ The code of ReactOS is licensed under [GNU GPL 2.0](https://github.com/reactos/r
To build the system it is strongly advised to use the _ReactOS Build Environment (RosBE)._
Up-to-date versions for Windows and for Unix/GNU-Linux are available from our download page at: ["Build Environment"](https://reactos.org/wiki/Build_Environment).
Alternatively one can use Microsoft Visual C++ (MSVC) version 2015+. Building with MSVC is covered here: ["Visual Studio or Microsoft Visual C++"](https://reactos.org/wiki/CMake#Visual_Studio_or_Microsoft_Visual_C.2B.2B).
Alternatively one can use Microsoft Visual C++ (MSVC) version 2019+. Building with MSVC is covered here: ["Visual Studio or Microsoft Visual C++"](https://reactos.org/wiki/CMake#Visual_Studio_or_Microsoft_Visual_C.2B.2B).
See ["Building ReactOS"](https://reactos.org/wiki/Building_ReactOS) article for more details.
@@ -127,10 +121,10 @@ The main development is done on [GitHub](https://github.com/reactos/reactos). We
There is also an obsolete [SVN archive repository](https://svn.reactos.org/reactos/) that is kept for historical purposes.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.