https://git.reactos.org/?p=reactos.git;a=commitdiff;h=789cfd3ddc6cd15d80db1…
commit 789cfd3ddc6cd15d80db120d0ddcc1e7616ce85d
Author:     Thomas Faber <thomas.faber(a)reactos.org>
AuthorDate: Mon Feb 25 12:48:54 2019 +0100
Commit:     Thomas Faber <thomas.faber(a)reactos.org>
CommitDate: Tue Feb 26 09:20:47 2019 +0100
    [HDAUDBUS] Forward FDO requests instead of completing them.
---
 drivers/wdm/audio/hdaudbus/hdaudbus.cpp | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/wdm/audio/hdaudbus/hdaudbus.cpp
b/drivers/wdm/audio/hdaudbus/hdaudbus.cpp
index 2c82a9a4f7..b8eacba435 100644
--- a/drivers/wdm/audio/hdaudbus/hdaudbus.cpp
+++ b/drivers/wdm/audio/hdaudbus/hdaudbus.cpp
@@ -101,28 +101,26 @@ HDA_FdoPnp(
     {
     case IRP_MN_START_DEVICE:
         Status = HDA_FDOStartDevice(DeviceObject, Irp);
-        break;
+        Irp->IoStatus.Status = Status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+        return Status;
     case IRP_MN_QUERY_DEVICE_RELATIONS:
         /* handle bus device relations */
         if (IoStack->Parameters.QueryDeviceRelations.Type == BusRelations)
         {
             Status = HDA_FDOQueryBusRelations(DeviceObject, Irp);
+            Irp->IoStatus.Status = Status;
+            if (!NT_SUCCESS(Status))
+            {
+                IoCompleteRequest(Irp, IO_NO_INCREMENT);
+                return Status;
+            }
         }
-        else
-        {
-            Status = Irp->IoStatus.Status;
-        }
-        break;
-    default:
-        /* get default status */
-        Status = Irp->IoStatus.Status;
         break;
     }
-    Irp->IoStatus.Status = Status;
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return Status;
+    IoSkipCurrentIrpStackLocation(Irp);
+    return IoCallDriver(FDODeviceExtension->LowerDevice, Irp);
 }
 NTSTATUS