[HALX86] Restore Windows compatibility on reporting device IDs

And forwarding IRPs from FDO to PDO

This along with 8aff2c9de7 reverts the commit 74b889b397
This commit is contained in:
Victor Perevertkin 2021-01-31 05:37:27 +03:00
parent f91efe1502
commit 8248f02ff4
No known key found for this signature in database
GPG key ID: C750B7222E9C7830
2 changed files with 34 additions and 12 deletions

View file

@ -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;

View file

@ -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;