[HDAUDBUS] Use IoForwardIrpSynchronously instead of HDA_SyncForwardIrp.
authorThomas Faber <thomas.faber@reactos.org>
Sun, 24 Feb 2019 11:23:45 +0000 (12:23 +0100)
committerThomas Faber <thomas.faber@reactos.org>
Tue, 26 Feb 2019 08:50:50 +0000 (09:50 +0100)
drivers/wdm/audio/hdaudbus/fdo.cpp
drivers/wdm/audio/hdaudbus/hdaudbus.cpp
drivers/wdm/audio/hdaudbus/hdaudbus.h

index 6bbadf3..3df33c9 100644 (file)
@@ -540,7 +540,12 @@ HDA_FDOStartDevice(
     ASSERT(DeviceExtension->IsFDO == TRUE);
 
     /* forward irp to lower device */
-    Status = HDA_SyncForwardIrp(DeviceExtension->LowerDevice, Irp);
+    if (!IoForwardIrpSynchronously(DeviceExtension->LowerDevice, Irp))
+    {
+        ASSERT(FALSE);
+        return STATUS_INVALID_DEVICE_REQUEST;
+    }
+    Status = Irp->IoStatus.Status;
     if (!NT_SUCCESS(Status))
     {
         // failed to start
index b8eacba..440d75a 100644 (file)
@@ -31,60 +31,6 @@ FreeItem(
     ExFreePool(Item);
 }
 
-NTSTATUS
-NTAPI
-HDA_SyncForwardIrpCompletionRoutine(
-    IN PDEVICE_OBJECT DeviceObject,
-    IN PIRP Irp,
-    IN PVOID Context)
-{
-    if (Irp->PendingReturned)
-    {
-        KeSetEvent((PKEVENT)Context, IO_NO_INCREMENT, FALSE);
-    }
-    return STATUS_MORE_PROCESSING_REQUIRED;
-}
-
-NTSTATUS
-NTAPI
-HDA_SyncForwardIrp(
-    IN PDEVICE_OBJECT DeviceObject,
-    IN PIRP Irp)
-{
-    KEVENT Event;
-    NTSTATUS Status;
-
-    /* Initialize event */
-    KeInitializeEvent(&Event, NotificationEvent, FALSE);
-
-    /* Copy irp stack location */
-    IoCopyCurrentIrpStackLocationToNext(Irp);
-
-    /* Set completion routine */
-    IoSetCompletionRoutine(Irp,
-        HDA_SyncForwardIrpCompletionRoutine,
-        &Event,
-        TRUE,
-        TRUE,
-        TRUE);
-
-    /* Call driver */
-    Status = IoCallDriver(DeviceObject, Irp);
-
-    /* Check if pending */
-    if (Status == STATUS_PENDING)
-    {
-        /* Wait for the request to finish */
-        KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
-
-        /* Copy status code */
-        Status = Irp->IoStatus.Status;
-    }
-
-    /* Done */
-    return Status;
-}
-
 NTSTATUS
 HDA_FdoPnp(
     _In_ PDEVICE_OBJECT DeviceObject,
index 1496f6d..fa7f04a 100644 (file)
@@ -170,12 +170,3 @@ NTSTATUS
 HDA_PDOHandleQueryInterface(
     IN PDEVICE_OBJECT DeviceObject,
     IN PIRP Irp);
-
-/* hdaudbus.cpp*/
-
-NTSTATUS
-NTAPI
-HDA_SyncForwardIrp(
-    IN PDEVICE_OBJECT DeviceObject,
-    IN PIRP Irp);
-