From 789cfd3ddc6cd15d80db120d0ddcc1e7616ce85d Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 25 Feb 2019 12:48:54 +0100 Subject: [PATCH] [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 2c82a9a4f75..b8eacba4358 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 -- 2.17.1