https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8248f02ff46abbc5b9a1ce...
commit 8248f02ff46abbc5b9a1cec8703c88655cf1813a Author: Victor Perevertkin victor.perevertkin@reactos.org AuthorDate: Sun Jan 31 05:37:27 2021 +0300 Commit: Victor Perevertkin victor.perevertkin@reactos.org CommitDate: Sun Jan 31 05:37:27 2021 +0300
[HALX86] Restore Windows compatibility on reporting device IDs
And forwarding IRPs from FDO to PDO
This along with 8aff2c9de7cf45dd306e447b0c27a379f827fe4c reverts the commit 74b889b3977594229a78d87066dfc22c1f9b46b8 --- hal/halx86/acpi/halpnpdd.c | 23 +++++++++++++++++------ hal/halx86/legacy/halpnpdd.c | 23 +++++++++++++++++------ 2 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/hal/halx86/acpi/halpnpdd.c b/hal/halx86/acpi/halpnpdd.c index 03c195293a5..3f3d895cf2c 100644 --- a/hal/halx86/acpi/halpnpdd.c +++ b/hal/halx86/acpi/halpnpdd.c @@ -561,10 +561,6 @@ HalpQueryIdFdo(IN PDEVICE_OBJECT DeviceObject, switch (IdType) { case BusQueryDeviceID: - /* HACK */ - Id = L"Root\ACPI_HAL"; - break; - case BusQueryHardwareIDs:
/* This is our hardware ID */ @@ -676,11 +672,26 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject, default:
DPRINT("Other IRP: %lx\n", Minor); - Status = Irp->IoStatus.Status; + Status = STATUS_NOT_SUPPORTED; break; }
- /* Nowhere for the IRP to go since we also own the PDO */ + /* What happpened? */ + if ((NT_SUCCESS(Status)) || (Status == STATUS_NOT_SUPPORTED)) + { + /* Set the IRP status, unless this isn't understood */ + if (Status != STATUS_NOT_SUPPORTED) + { + Irp->IoStatus.Status = Status; + } + + /* Pass it on */ + IoSkipCurrentIrpStackLocation(Irp); + return IoCallDriver(FdoExtension->AttachedDeviceObject, Irp); + } + + /* Otherwise, we failed, so set the status and complete the request */ + DPRINT1("IRP failed with status: %lx\n", Status); Irp->IoStatus.Status = Status; IoCompleteRequest(Irp, IO_NO_INCREMENT); return Status; diff --git a/hal/halx86/legacy/halpnpdd.c b/hal/halx86/legacy/halpnpdd.c index 716b0d269e7..b2c03f2e417 100644 --- a/hal/halx86/legacy/halpnpdd.c +++ b/hal/halx86/legacy/halpnpdd.c @@ -559,10 +559,6 @@ HalpQueryIdFdo(IN PDEVICE_OBJECT DeviceObject, switch (IdType) { case BusQueryDeviceID: - /* HACK */ - Id = L"Root\PCI_HAL"; - break; - case BusQueryHardwareIDs:
/* This is our hardware ID */ @@ -673,11 +669,26 @@ HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject, default:
DPRINT("Other IRP: %lx\n", Minor); - Status = Irp->IoStatus.Status; + Status = STATUS_NOT_SUPPORTED; break; }
- /* Nowhere for the IRP to go since we also own the PDO */ + /* What happpened? */ + if ((NT_SUCCESS(Status)) || (Status == STATUS_NOT_SUPPORTED)) + { + /* Set the IRP status, unless this isn't understood */ + if (Status != STATUS_NOT_SUPPORTED) + { + Irp->IoStatus.Status = Status; + } + + /* Pass it on */ + IoSkipCurrentIrpStackLocation(Irp); + return IoCallDriver(FdoExtension->AttachedDeviceObject, Irp); + } + + /* Otherwise, we failed, so set the status and complete the request */ + DPRINT1("IRP failed with status: %lx\n", Status); Irp->IoStatus.Status = Status; IoCompleteRequest(Irp, IO_NO_INCREMENT); return Status;