Commit graph

87063 commits

Author SHA1 Message Date
Whindmar Saksit
efbdd483b3
[SHELL32] Allow .Lnk properties dialog to change icon for non-FS targets (#7911)
CORE-19971
2025-04-24 21:30:27 +02:00
Whindmar Saksit
7eb8535edf
[STOBJECT][NTUSER][ACCESS] Don't use a systray timer when not needed (#7917) 2025-04-24 21:27:36 +02:00
Whindmar Saksit
78e04c07b8
[USER32] Read the CoolSwitch settings from the registry (#7920) 2025-04-24 15:22:43 +02:00
Timo Kreuzer
e452980e0e [HALX86/APIC] Change IRQL for x86 profile interrupt to HIGH_LEVEL
While PROFILE_LEVEL is defined as 27 on x86, this does not match the vector for the profiling interrupt, which is 0xFD (see https://community.osr.com/t/odd-ioapic-output/45216), implying IRQL 31.
Fixes boot with x86 APIC hal (CORE-20093)
2025-04-24 11:36:12 +00:00
Timo Kreuzer
35fd771c84 [HALX86/APIC] Read APIC Id from APIC instead of using initial Id
This is needed on some hardware systems, where the BIOS has modified the actual APIC IDs.
The timer interrupt already did this, but in a broken way.
2025-04-24 11:36:12 +00:00
Timo Kreuzer
faaac75546 [HALX86/APIC] Use physical addressing in HalEnableSystemInterrupt 2025-04-24 11:36:12 +00:00
Timo Kreuzer
f1f01771b6 [HALX86/APIC] Set timer interrupt to level triggered 2025-04-24 11:36:12 +00:00
Timo Kreuzer
884f73fb04 [HALX86/APIC] Fix interrupt delivery on bare metal
Write both high and low 32 bits of ICR in ApicRequestSelfInterrupt. In VMs we get away with only writing the low 32 bits, but actual hardware doesn't always accept that.
2025-04-24 11:36:12 +00:00
Timo Kreuzer
0f6e982ad7 [HALX86/APIC] Mask profiling interrupt on init 2025-04-24 11:36:12 +00:00
Timo Kreuzer
2c057d9bc1 [HALX86] Set the NMI disable flag when accessing CMOS registers
An NMI while accessing the CMOS can leave it in an undefined state. NMIs are used on x64 SMP for CPU freeze in the debugger.
2025-04-24 11:36:12 +00:00
Katayama Hirofumi MZ
94fc56c038
[COMCTL32][USER32] Edit: Don't unlock if unlocked on EM_SETHANDLE (#7886)
JIRA issue: CORE-18944
EDIT_EM_GetHandle unlocks the handle,
so the next EM_SETHANDLE handler
shouldn't unlock the unlocked text.
Don't unlock the handle when es->text
was NULL on EM_SETHANDLE
message handling.
2025-04-24 19:21:22 +09:00
Mohammad Amin Mollazadeh
860262952d
[SHELL32] Fix Deselect highlighted item in shell menus on close (#7904)
CORE-18855

Add a call to _ChangeHotItem(NULL, -1, 0) in CMenuBand::OnSelect(MPOS_CANCELLEVEL) which causes to deselect currently selected item the moment the menu bands (including start menu) are closing.
Start Menu is not destroyed when it's closed so its allocated resources can be re-used next time user wants to open it, so to keep this behavior and still not having an item selected every time you open the start menu, you have to deselect the currently selected item.
2025-04-23 23:10:08 +02:00
Whindmar Saksit
fcc2247774
[BROWSEUI] Use the last id for custom find files menu item (#7918) 2025-04-23 18:57:24 +02:00
Whindmar Saksit
6faee56f86
[DESK] Preview the color on the background color button (#7916)
Note: A bug in the classic button prevents it from sending CDDS_POSTPAINT if the button has no text, the button resource has a space in its text as a workaround.
2025-04-23 18:32:45 +02:00
Whindmar Saksit
d3456f5060
[SHELL32] Implement IShellFolder2::GetDetailsEx (#7880) 2025-04-21 23:21:44 +02:00
Marcin Jabłoński
4cbd5d1b44
[TASKMGR] Distinguish WOW64 processes with a " *32" in the image name (#7915) 2025-04-21 23:17:19 +02:00
Whindmar Saksit
73b019a390
[SHELL32] Respect the REST_NODRIVES restriction (#7907)
This is the "My Computer => Drives" setting in TweakUI.
2025-04-21 23:16:59 +02:00
Whindmar Saksit
fb6191b71a
[SHELL32] Respect StrCmpLogicalW policy in shell folders (#7900) 2025-04-21 23:06:47 +02:00
Eric Kohl
4514e748f0 [DHCPCSVC] Implement DhcpAcquireParameters and DhcpReleaseParameters
TODO: The AdapterName parameter should be a unicode string. Fix this later.
2025-04-21 14:45:51 +02:00
Hermès Bélusca-Maïto
f135cab83e
[SETUPLIB] Add a setuplib_static library, used for the dll and the unit-tests.
Since the setuplib.dll isn't available after installing ReactOS, build
instead a static library that is then used for the dll, and linked into
the setuplib_unittest, so that it can be run in our test-suite.

Addendum to commit d7c1d220.
2025-04-20 19:18:28 +02:00
Eric Kohl
2c2cdfddd3 [DHCPCSVC] Move the public header rosdhcp_public.h
This header is not to be used outside of dhcpcsvc because it contains the data structures for the communication between the client and the server part within dhcpcsvc. That is why it is moved inside of dhcpcsvc and renamed to rosdhcp_pipe.h.
2025-04-19 22:55:52 +02:00
Hermès Bélusca-Maïto
d489f1a170
[NTOS:KD] Supplement minimal handling in KdSend/ReceivePacket when no kernel debugger is present.
CORE-20107

Improve the minimal handling done in the fall-back KdSend/ReceivePacket()
routines when they are invoked by KD64 (in Release build).

Part of my `kdbg_tests_kdio_split` branch for splitting kd/kdio.c
into a separate KD dll.

KdSendPacket:
- Silently ignore PACKET_TYPE_KD_STATE_CHANGE32/64 DbgKdLoadSymbolsStateChange notification.
- Partially manage and log the unhandled PACKET_TYPE_KD_STATE_CHANGE DbgKdExceptionStateChange notification.
- Log other unhandled PACKET_TYPE_KD_STATE_CHANGE32/64 and PACKET_TYPE_KD_STATE_MANIPULATE notifications.

When KdSendPacket receives the DbgKdExceptionStateChange notification,
it cannot handle it (no debugger is there!). However, we need to claim
the debugger to be present, so that its KD64 caller: KdpSendWaitContinue(),
can call back KdReceivePacket(PACKET_TYPE_KD_STATE_MANIPULATE), which,
in turn, informs KD that the exception cannot be handled, by returning
a failure code in the ManipulateState's ContinueStatus.

During bugchecks, this allows KiBugCheckDebugBreak() to not loop infinitely,
but instead fall back into calling HalHaltSystem() to halt the computer.
2025-04-19 20:01:10 +02:00
Serge Gautherie
0e21c6f3fd
[NTOS:KD] Accept some packet types without KDBG (#7892)
When KDBG isn't included in the kernel (Release build), the fall-back
KdSend/ReceivePacket() routines are invoked by KD64. A minimal handling
of the basic packets needs to be done:
PACKET_TYPE_KD_STATE_CHANGE32/64 for KdSendPacket(),
and PACKET_TYPE_KD_POLL_BREAKIN, PACKET_TYPE_KD_STATE_MANIPULATE
for KdReceivePacket().

Addendum to commit 2046a17ef4
CORE-20107
2025-04-19 20:01:09 +02:00
Hermès Bélusca-Maïto
005f75bd61
[RTL] x64/ARM: Alias RtlpBreakWithStatusInstruction to DbgBreakPointWithStatus; x64: fix a bug.
RtlpBreakWithStatusInstruction is just a label for KD.

On machines that have register calling conventions (basically all except
x86), the `Status` parameter for `DbgBreakPointWithStatus` is stored in
the first argument register.

https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-dbgbreakpointwithstatus

On the x64 platform, `DbgBreakPointWithStatus` only uses the ECX register
and leaves EAX untouched. Verified on Windows.
2025-04-19 20:01:08 +02:00
Hermès Bélusca-Maïto
a7d86fe3a7
[NTOS][RTL] Remove unused deprecated ReactOS-only DbgBreakPointNoBugCheck()
This helper was introduced in commit b041530f2d (r8551), and its
last remaining usage removed in commit f038f4a895 (r23636).
2025-04-19 20:01:06 +02:00
Whindmar Saksit
b42b015cc6
[SHELL32] Enable OK Run dialog button on combo change (#7909)
CORE-20125
2025-04-19 14:18:08 +02:00
Eric Kohl
2fe3073697 [DHCPCSVC] Remove the now obsolete function DhcpRosGetAdapterInfo 2025-04-19 11:42:09 +02:00
Eric Kohl
3fe4b41f20 [IPHLPAPI] Retrieve DHCP information from the registry 2025-04-18 19:52:23 +02:00
Doug Lyons
fa7890f39d
[SERVMAN] Services Properties 'Dependencies' tab missing text above lower listbox (#7899)
- Add some missing 'colons' to descriptive text above upper listbox.
CORE-20115
2025-04-18 12:45:48 -05:00
Timo Kreuzer
aa60e56199 [NTOS] Fix MSVC warnings
Be strict about string length to prevent overflows.
2025-04-18 17:28:49 +00:00
Eric Kohl
aa6c33b21c [DHCPCSVC] Set more registry values when an ip address has been provided
Set the DhcpServer, LeaseObtainedTime and LeaseTerminatesTime values.
2025-04-18 19:26:23 +02:00
Whindmar Saksit
5a10ec60be
[EXPLORER][BROWSEUI][SHLWAPI][BOOTDATA][WIN32K] Support AppKeys and more WM_APPCOMMANDs (#7879)
Implements a couple of extra commands in IShellBrowser and adds support for the AppKeys fallback registry key (used when the foreground application does not handle the command).
2025-04-18 18:35:30 +02:00
Timo Kreuzer
2e85425c53 [NTOS:MM] Remove one more instance of MmLocateMemoryAreaByAddress 2025-04-17 22:22:08 +00:00
Timo Kreuzer
0e58b59794 [NTOS:MM] Get rid of more calls to MmLocateMemoryAreaByAddress 2025-04-17 22:22:08 +00:00
Timo Kreuzer
1f27911997 [NTOS:MM] Reduce the magnitude of the MiRosProtectVirtualMemory hack 2025-04-17 22:22:08 +00:00
Timo Kreuzer
f60128b69d [NTOS:MM] Remove usage of memory area in MiProtectVirtualMemory 2025-04-17 22:22:08 +00:00
Timo Kreuzer
edecbf4799 [NTOS:MM] Remove usage of memory area in MiUnmapViewOfSection 2025-04-17 22:22:08 +00:00
Timo Kreuzer
a8f4a76c7b [NTOS:MM] Improve MiDeleteVirtualAddresses
- Fix parameter annotations
- Add an ASSERT
2025-04-17 22:22:08 +00:00
Timo Kreuzer
8851d86847 [NTOS:MM] Remove Vad pointer from MEMORY_AREA 2025-04-17 22:22:08 +00:00
Timo Kreuzer
7611e49b9d [NTOS:MM] Use StartingVpn instead of Vad member to check for user/kernel 2025-04-17 22:22:08 +00:00
Timo Kreuzer
7ec2e1cd2f [NTOS:MM] Stop inserting fake MEMORY_AREAs for ARM³ VADs
They were introduced when MEMROY_AREAs and VAD still lived in different tables to synchronize between them. Since some time MEMORY_AREAs are special VADs and live in the same table as ARM³ VADs, but with flags to distinguish them. Since then the only reason that the fake MEMORY_AREAs still existed was to determine whether a VAD that is a MEMORY_AREA is still handled by ARM³ (which is the case for some kernel VADs, like for paged pool). This is no longer required as it is now determined by a 2nd flag in the VAD itself.
Additionally, we tried to insert the fake MEMORY_AREAs into the VAD table, which would fail, because it was already occupied by the ARM³ VAD, but the failure was ignored.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
2696f1a29f [NTOS:MM] Do not update ARM³ owned memory area
Those are not inserted into a table and we don't use them.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
ec45b8fde8 [NTOS:MM] Stop using memory areas in MmAccessFault
- Implement MiLocateVad and make MiLocateAddress call it
- Use MiLocateVad in MmAccessFault to get the VAD
- Check VadFlags for whether this is an ARM³ VAD/MEMORY_AREA
2025-04-17 22:22:08 +00:00
Timo Kreuzer
fca88bb94d [NTOS:MM] Add more checks for MEMORY_AREA_OWNED_BY_ARM3 2025-04-17 22:22:08 +00:00
Timo Kreuzer
d0a7e496aa [NTOS:MM] Mark RosMm memory areas
This is to distinguish them from ARM³ memory areas, which we use for some kernel regions, like paged pool.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
42c7e4f66a [NTOS:MM] Add macros to determine whether a VAD is a MEMORY_AREA 2025-04-17 22:22:08 +00:00
Timo Kreuzer
d27f5971c5 [NTOS:MM] Add MmIsAddressRangeFree helper function
Use this instead of MmLocateMemoryAreaByRegion to determine whether we can inert a section at the requested base address. This will be required to get rid of fake memory areas allocated for each ARM³ VAD.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
48027a8058 [NTOS:MM] Remove obsolete code path
In MmCleanProcessAddressSpace we already delete VADs that are RosMm memory areas by calling MiRosCleanupMemoryArea, so we never reach the later check. This code path is from a time when VADs and memory areas lived in different tables, which is no longer the case.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
7b23673851 [NTOS:MM] Forward MmLocateMemoryAreaByAddress to MmLocateMemoryAreaByRegion
Both functions do exactly the same.
2025-04-17 22:22:08 +00:00
Timo Kreuzer
31a693a035 [NTOS:MM] Remove some obsolete declarations 2025-04-17 22:22:08 +00:00