Commit Graph

1303 Commits

Author SHA1 Message Date
Justin Miller
18f9a03338 [PCIX] Fix a few easy bugs (#8443)
* [PCIX] Fix the weird text corruption in PciGetDescriptionMessage

* [PCIX] Return the buffer to the caller PciQueryBusInformation


Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
2025-11-03 10:52:19 -08:00
Justin Miller
3fe5b8b0bb [SDK][WDF][USBDEX][NTOSKRNL_VISTA] Fully enable KMDF (#8396)
[SDK][WDFLDR] Add kmdf loader driver
[SDK][WDF] Add kmdf drver init static library
[SDK][WDF] Modify kmdf driver for working with wdfldr driver
[SDK][CDROM] Cdrom driver dynamically linking with kmdf
[SDK][WDF] Add kmdfdriver module type
[SDK][WDF][USBDEX][NTOSKRNL_VISTA] Fully enable KMDF
[KMDF][WDFLDR][WDF01000] Fix Windows 10 Compatibility WDFLDR and WDF01000
[WDF01000] NO_KERNEL_LIST_ENTRY_CHECKS for wdf01000 3rd party code

This PR is an accumulation of three peoples work, with the goal of the trying to get WDF to work like it should.
This has been tested in combination with some extra NT6+ ntoskrnl against multiple drivers.

---------

Co-authored-by: Max Korostil <mrmks04@yandex.ru>
Co-authored-by: Victor Perevertkin <victor.perevertkin@reactos.org>
Co-authored-by: Adam Słaboń <asaillen@protonmail.com>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
2025-11-03 06:38:52 -08:00
Hermès Bélusca-Maïto
df49026976 [NETWORK:NE2000] Move the NDIS_* defines to the CMakeFiles.txt 2025-10-26 18:23:54 +01:00
Serge Gautherie
5b1224b8a3 [NETWORK:DD][NDIS] Be explicit about NDIS_LEGACY_MINIPORT value (#8315)
Also, NDIS_LEGACY_DRIVER and NDIS_LEGACY_PROTOCOL.
2025-10-26 18:23:53 +01:00
Serge Gautherie
04f052bec8 [NETWORK:DD] NDIS_MINIPORT_DRIVER and NDIS51_MINIPORT do not need a value (#8315) 2025-10-26 18:23:48 +01:00
Serge Gautherie
ca2fb5f666 [NDIS] NdisRegisterProtocol(): Add a comment about NDIS51 (#8314)
CORE-20300

- `NdisRegisterProtocol()`: Add a comment about `NDIS51`: the
  `NDIS50_PROTOCOL_CHARACTERISTICS` structure is common to both
  NDIS 5.0 and 5.1.
  This is in contrast to the `NDIS50/NDIS51_MINIPORT_CHARACTERISTICS`
  structures, see for example commit 3e169e3cb2 (r49961).

- Remove obsolete SOURCES file. Addendum to commit d9e83ed22d (r40142).
2025-10-26 17:28:51 +01:00
Serge Gautherie
dd00ebdd51 [PCNET] CMakeLists.txt: Remove superseded -DNDIS50_MINIPORT (#8313)
Addendum to commit 74015adb69 (r20671).
CORE-20300
2025-10-26 17:17:07 +01:00
Hermès Bélusca-Maïto
ad10c08b3d [SCSIPORT] Fix "Targed" typo 2025-10-19 17:13:51 +02:00
Hermès Bélusca-Maïto
e969fbeea8 [UDFS] Add missing NTAPI for PIO_APC_ROUTINE (#8417) 2025-10-19 17:11:55 +02:00
Hermès Bélusca-Maïto
1af29a66ca [CMBATT] Inform when a discovered battery doesn't support the _BTP trip-point method (#8384) 2025-09-15 16:26:06 +02:00
Hermès Bélusca-Maïto
b73159fecf [BATTC][COMPBATT] Move the IOCTL_BATTERY_QUERY_STATUS wait hack to BATTC (#8384)
CORE-20343

The 3-second timeout FIXME (instead of waiting indefinitely), made in the
COMPBATT worker thread for the `IOCTL_BATTERY_QUERY_STATUS` case, was done
because _*our*_ BATTC handler expects the batteries to always support the
BTP (Battery Trip Point) feature for signaling a change of battery status,
but in the cases where it isn't supported, any waits it tried for the
battery to notify about a status change would never happen.

Furthermore, following commit 3a6e0d4b65, the `SetStatusNotify()` call
(_which always fails if the battery doesn't support the BTP feature_)
would now always exit the `IOCTL_BATTERY_QUERY_STATUS` handling without
any waiting nor battery polling [^1], and this would cause the COMPBATT
worker thread to busy-poll again forever.

The timeout FIXME is now moved to BATTC, instead of COMPBATT, since the
actual fixes should be in BATTC. In particular, it should queue all the
query IOCTLs and then serve them, either using the StatusNotify (BTP)
functionality if the battery supports it, or if not, do a very-slow
battery polling.

I've also increased the timeout a little bit more (5 seconds and not 3).

[^1]: Per the ACPI specification, it is expected that the operating system
  performs battery polling if the battery doesn't support BTP, see:
  https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/10_Power_Source_and_Power_Meter_Devices/Power_Source_and_Power_Meter_Devices.html#btp-battery-trip-point
2025-09-15 16:25:14 +02:00
Hermès Bélusca-Maïto
54489d6cce [CMBATT] Fix a debug print 2025-09-15 16:25:13 +02:00
Hermès Bélusca-Maïto
20d7fd78ae [CMBATT] Fix "TripPpoint" typo 2025-09-13 21:34:18 +02:00
Timo Kreuzer
3a6e0d4b65 [BATTC] Fix IOCTL_BATTERY_QUERY_STATUS
Previously the function waited for the conditions *after* querying the status, and then returned the old status. Also, if querying failed, it waited and when the wait timed out it returned STATUS_SUCCESS without returning any data. If the call to SetStatusNotify failed and there was no timeout, it would wait forever.
This is all fixed now.
2025-09-13 11:38:38 +03:00
Timo Kreuzer
01872b8495 [NPFS] Fix dereference of uninitialized variable
- Avoid uninitialized return variables
- Fix a parameter check
2025-09-11 12:31:14 +03:00
Serge Gautherie
c3bb9d6ca9 [UNIATA] UniataChipDetect(): Workaround AHCI detection (#8184)
Fix AHCI support regression.
Disable a "new" code block, which is broken.

Reverts a part of commit 1afae58191 (r69699).
CORE-13346
2025-08-26 22:50:22 +02:00
Serge Gautherie
5ae1c72395 [NDIS] NDIS_TAG: Fix definition and usages (#8243)
- Let it be `"NDIS"`, instead of variations of `"SIMN"`.
- Use matching `ExFreePoolWithTag()`.
- Remove a redundant `KeyInformation = NULL;`.

Addendum to commits e8861acfb2 (r12196) and 5658b2154c (r53045).
CORE-18791
2025-08-16 19:01:55 +02:00
Serge Gautherie
7e294faff4 [UNIATA] Upgrade to v0.47b from v0.47a (#8177)
- Remove unused idedma.def
  Addendum to commit 1daf74908e (r29256).

- Convert a few files to UTF-8 from ANSI
  Plus, 2 tiny formatting fixes.

- id_ata.cpp: Unmark a ReactOS own diff
  Addendum to commit 7fdf078134.

- id_init.cpp: Mark a diff
  Addendum to commit 09dde2cff9.

- Upgrade to v0.47b from v0.47a

CORE-17876
2025-08-16 18:56:58 +02:00
Serge Gautherie
f100d34638 [NDIS][PSDK] Define IOCTL_NDIS_RESERVED7 and add a stub (#8240)
Another small step, until further investigation and implementation.

CORE-13831
2025-08-16 19:54:21 +03:00
Serge Gautherie
f24b57378e [PSDK][KS] IKsProcessingObject_fnProcessingObjectWork(): Fix mutex copypastas (#8288)
- ks.h: Add KsFilterReleaseProcessingMutex() declaration

- `IKsProcessingObject_fnProcessingObjectWork()`: Fix mutex copypastas

Addendum to commit c6b26fa452 (r50531).
CORE-19511
2025-08-08 23:35:56 +02:00
Oleg Dubinskiy
62f9d1ad46 [TCPIP] Return MIB_IF_TYPE_ETHERNET for WLAN adapter types when compiling ReactOS as NT 5.2 (#8300)
Split Windows Server 2003 and Windows Vista behaviour in two different cases and make them used separately: when ReactOS target version is NT 5.2, use the 1st case, otherwise use the 2nd one instead.
Also, handle NdisPhysicalMediumNative802_11 case only for NT 6.0 and newer, since that's actually supported starting from NDIS 6.0, according to MSDN:
https://learn.microsoft.com/en-us/windows-hardware/drivers/network/oid-gen-physical-medium
while for NDIS 5.1 and newer it's:
https://learn.microsoft.com/en-us/previous-versions/windows/hardware/network/ff560255(v=vs.85)
This fixes:
1. A critical regression with unavailable networking in ReactOS when 3rd-party NT5-compatible Ethernet/Wi-Fi drivers are used (both in VM and on real hardware) caused by commit 3842b59f75 from @EricKohl.
2. Failure to open Network Properties and Network Status from the Network tray icon (caused by the same commit too).
MSDN tells us this is done so for Windows XP and Server 2003 as well, and IF_TYPE_IEEE80211 is returned only in Windows Vista and newer, so the following Microsoft documentation is actually correct in this case:
https://learn.microsoft.com/en-us/windows/win32/api/iptypes/ns-iptypes-ip_adapter_info
(see the information about "IP_ADAPTER_INFO.Type" member below on that page)
!!!Please note that the behaviour of Vista+ case (e. g., when compiling ReactOS targeted as NT 6.0 and newer) remains unchanged after this fix (networking still may not work), so it still requires the proper support of 3rd-party NT6+ compatible network miniport drivers (by handling this case via the Vista/NDIS6-style way) for NT6 target!!!
CORE-20244
2025-08-08 16:10:50 +02:00
Timo Kreuzer
b7066b9232 [TCPIP] Fix "mbox" queue synchronization
Use a KSEMAPHORE instead of a NotificationEvent to signal availability. This is to prevent satisfying the wait for multiple waiters, when only a single entry is on the list.
Fixes crashes on SMP builds.
2025-08-05 09:15:07 +03:00
Timo Kreuzer
069fc049db [TCPIP] Fix global synchronization on SMP
We cannot just raise IRQL! Instead use a global ERESOURCE, which allows to be acquired recursively, as required by LWIP.
2025-08-05 09:15:07 +03:00
Dmitry Borisov
b558596409 [SPTILIB] Introduce SPTI static library for storage drivers (#8209)
Add a SCSI and ATA passthrough support helper library for direct use
from low-level storage drivers.

Tested with: CDRoller, CloneCD, Magic ISO
NOTE: Vbox seems to lack support for CD/DVD burning; tested on real hardware.

CORE-10191 CORE-16452
CORE-14788 CORE-18241
CORE-17256 CORE-13866
2025-07-13 22:49:51 +02:00
Serge Gautherie
2c0782d1e0 [SCSIPORT] Add explicit IOCTL_ATA_PASS_THROUGH* cases (#1969)
ATA passthrough IOCTLs not supported by MS scsiport.
The implementation is optional, especially in SCSI.

IOCTL_SCSI_PASS_THROUGH will be implemented in SPTI library.

CORE-16422
2025-07-05 18:20:42 +03:00
Stanislav Motylkov
52e02af86b [BOOTVID] Fix build for ARM port
- Move functions from header to main source, keeping their definitions
- Fix typo DefaultPalette -> VidpDefaultPalette
- Add missing PrepareForSetPixel() function

Addendum to 5f2ca473dc and cd91271796. CORE-17617 CORE-17604
2025-07-02 22:24:46 +02:00
Hervé Poussineau
7b9ef6b390 [NDIS] NdisOpenFile: close file locally, as we don't need it later
Remove now unused field FileHandle in NDIS_HANDLE_OBJECT structure.
2025-06-29 08:23:33 +02:00
Hervé Poussineau
e2904d3baf [NDIS] NdisOpenFile: read file contents into buffer when opening it
NdisMapFile now returns a non-null buffer.

CORE-20259
2025-06-29 08:23:33 +02:00
Hervé Poussineau
d72bcb149f [NDIS] NdisOpenFile: retrieve and return file length in *FileLength
CORE-20259
2025-06-29 08:23:32 +02:00
Hervé Poussineau
07f305cd59 [NDIS] NdisOpenFile: use local variables instead of using output variables 2025-06-29 08:23:32 +02:00
Justin Miller
8aab5a9b24 [ACPI_NEW] Minimal to build
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Co-authored-by: Dmitry Borisov <di.sean@protonmail.com>
2025-06-19 20:32:11 -07:00
Daniil Tatianin
156fead517 [ACPI_NEW] Import uACPI 2.1.1 2025-06-19 20:32:11 -07:00
Eric Kohl
bec50f65f4 [ACPI] Report a docking device to the system 2025-06-08 16:47:45 +02:00
Timo Kreuzer
e431470ff9 [REACTOS] Fix build with VS 17.14.2 / CL 19.44.35207.1 2025-05-31 09:51:33 +00:00
Eric Kohl
99e2606982 [DC21x4][ne2000][netkvm][nvnet][pcnet][rtl8139] Implement OID_GEN_PHYSICAL_MEDIUM
CORE-20206
2025-05-25 23:48:38 +02:00
Timo Kreuzer
4cb4eee23a [E1000] Implement OID_GEN_PHYSICAL_MEDIUM 2025-05-22 18:37:55 +00:00
Eric Kohl
3842b59f75 [TCPIP] Retrieve the interface medium type from NDIS
Send OID_GEN_PHYSICAL_MEDIUM and OID_GEN_MEDIA_SUPPORTED query requests to NDIS.

This will enable us to distinguish wired and wireless ethernet adapters.
2025-05-20 00:47:26 +02:00
Eric Kohl
c477928b0e [HIDCLASS] Override hid device capabilities
- Disable the Removable capability
- Enable the SilentInstall and SurpriseRemovalOK capabilities

This keeps the remove device icon from showing in the notification area whenever you plug in a mouse or a keyboard.
2025-05-19 00:29:10 +02:00
Dmitry Borisov
45b928f8bc [ACPI] Remove section assignment from IOCTL handlers (#7829)
Fix a bug introduced in 5070e8960a.

CORE-17256

- These handlers must be memory resident. Otherwise,
  this would cause a page fault that needs to be resolved.
  Low-level storage drivers could evaluate ACPI control
  methods while the device's IRP queue has been paused.

- Minor code enhancements.
2025-05-05 22:42:11 +02:00
Eric Kohl
9638666d84 [MOUCLASS] Only set the device interface state if we have an interface name 2025-05-04 17:28:37 +02:00
Eric Kohl
5414600e1e [KBDCLASS] Set the device interface state on device start and device remove 2025-05-04 17:27:23 +02:00
Eric Kohl
bfa63932ce [MOUCLASS] Activate and deactivate the device interface for mouse devices 2025-04-28 21:14:20 +02:00
Adam Słaboń
3d9b919814 [MOUNTMGR] Few fixes and improvements (#7896)
- `MountMgrVolumeMountPointChanged()`: Set status code in all failure
  paths and correct the check for remote or removable media.
- `DeleteRemoteDatabaseEntry()`: Do not allow the database with size of zero.
- `QueryVolumeName()`: Use reparse point file reference when no file name is supplied.
2025-04-17 15:26:58 +02:00
Hermès Bélusca-Maïto
1b564c1ba8 [REACTOS] Use the RT_* resource type defines where possible (#6023)
And use the self-documenting `MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)`
instead of `0` for the `LDR_RESOURCE_INFO::Language` structure member.
2025-04-08 20:21:07 +02:00
Hermès Bélusca-Maïto
111c8cc62a [REACTOS] Usage improvements for some RtlFindMessage invocations (#6023)
Use `RT_MESSAGETABLE` and `MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)`
instead of hardcoding their values.
2025-04-08 20:19:54 +02:00
Johannes Anderwald
dba4efbcae [USBCCGP] [USBPORT] USB Stack improvements (#7740)
[USBCCGP]

Ignore invalid devices
Group audio function interfaces together
[USBPORT]

Prevent infinite loop in USBPORT_OpenPipe when endpoint is not becoming ready
2025-03-19 01:35:36 -07:00
Max Korostil
606e996e1f [UNIATA] Fix memory corruption if SCSIOP_SERVICE_ACTION16 processed. (#7717)
Reason: the size of `READ_CAPACITY16_DATA` struct in UniATA driver and ReactOS/Windows SDK were not equal.

- In UniATA driver: `sizeof(READ_CAPACITY16_DATA) == 33` (wrong);
- In ReactOS/Windows SDK: `sizeof(READ_CAPACITY16_DATA) == 32` (correct).

CORE-19696
2025-03-02 19:07:34 +01:00
Eric Kohl
9c8ef7369f [e1000][ne2000][pcnet][rtl8139] Add missing UpperRange and LowerRange values to network adapter inf files
These values will be used for binding network adapters to protocol drivers. Right now we use hard-coded binding.
2025-02-03 01:15:10 +01:00
Justin Miller
a8da29e888 [ACPI] Move CMBATT and COMPBATT out of the acpi directory (#7599)
Move these out of ACPI in preparation for ACPI_NEW so they keep their juicy commit history.
Also both ACPIs can coexist for awhile as I don't see the old driver getting removed anytime soon.
2025-01-29 00:49:35 -08:00
Hermès Bélusca-Maïto
8d91d4c8e1 [MOUNTMGR] MountMgrMountedDeviceArrival(): Fix pool buffer double-free.
`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.
2025-01-28 15:29:40 +01:00