[ros-diffs] [janderwald] 41489: - Free forgotten irps - Implement PcCompleteIrp

janderwald at svn.reactos.org janderwald at svn.reactos.org
Sat Jun 20 18:00:46 CEST 2009


Author: janderwald
Date: Sat Jun 20 20:00:45 2009
New Revision: 41489

URL: http://svn.reactos.org/svn/reactos?rev=41489&view=rev
Log:
- Free forgotten irps
- Implement PcCompleteIrp

Modified:
    trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c?rev=41489&r1=41488&r2=41489&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.c [iso-8859-1] Sat Jun 20 20:00:45 2009
@@ -143,22 +143,19 @@
         case IRP_MN_QUERY_INTERFACE:
             DPRINT("IRP_MN_QUERY_INTERFACE\n");
             Status = PcForwardIrpSynchronous(DeviceObject, Irp);
-            return Status;
-
+            return PcCompleteIrp(DeviceObject, Irp, Status);
         case IRP_MN_QUERY_DEVICE_RELATIONS:
             DPRINT("IRP_MN_QUERY_DEVICE_RELATIONS\n");
-            Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
-            IoCompleteRequest(Irp, IO_NO_INCREMENT);
-            return STATUS_NOT_SUPPORTED;
+            Status = PcForwardIrpSynchronous(DeviceObject, Irp);
+            return PcCompleteIrp(DeviceObject, Irp, Status);
         case IRP_MN_FILTER_RESOURCE_REQUIREMENTS:
-            DPRINT("IRP_MN_FILTER_RESOURCE_REQUIREMENTS Status %x Information %p Information2 %p\n", Irp->IoStatus.Status, Irp->IoStatus.Information, IoStack->Parameters.FilterResourceRequirements.IoResourceRequirementList);
-            Status = Irp->IoStatus.Status;
-            IoCompleteRequest(Irp, IO_NO_INCREMENT);
-            return Status;
+            DPRINT("IRP_MN_FILTER_RESOURCE_REQUIREMENTS\n");
+            Status = PcForwardIrpSynchronous(DeviceObject, Irp);
+            return PcCompleteIrp(DeviceObject, Irp, Status);
        case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
             DPRINT("IRP_MN_QUERY_RESOURCE_REQUIREMENTS\n");
             Status = PcForwardIrpSynchronous(DeviceObject, Irp);
-            return Status;
+            return PcCompleteIrp(DeviceObject, Irp, Status);
     }
 
     DPRINT1("unhandled function %u\n", IoStack->MinorFunction);
@@ -289,16 +286,23 @@
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-NTSTATUS NTAPI
+NTSTATUS
+NTAPI
 PcCompleteIrp(
     IN  PDEVICE_OBJECT DeviceObject,
     IN  PIRP Irp,
     IN  NTSTATUS Status)
 {
-    UNIMPLEMENTED;
-    return STATUS_UNSUCCESSFUL;
+    ASSERT(DeviceObject);
+    ASSERT(Irp);
+    ASSERT(Status != STATUS_PENDING);
+
+    Irp->IoStatus.Status = Status;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    return Status;
 }
 
 NTSTATUS



More information about the Ros-diffs mailing list