[ros-diffs] [janderwald] 38765: - sorry folks

janderwald at svn.reactos.org janderwald at svn.reactos.org
Wed Jan 14 22:47:55 CET 2009


Author: janderwald
Date: Wed Jan 14 15:47:54 2009
New Revision: 38765

URL: http://svn.reactos.org/svn/reactos?rev=38765&view=rev
Log:
- sorry folks

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

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=38765&r1=38764&r2=38765&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] Wed Jan 14 15:47:54 2009
@@ -119,7 +119,7 @@
         if ( ! NT_SUCCESS(status) )
         {
             DPRINT("StartDevice returned a failure code [0x%8x]\n", status);
-            resource_list->lpVtbl->Release(resource_list);
+            //resource_list->lpVtbl->Release(resource_list);
 
             Irp->IoStatus.Status = status;
             IoCompleteRequest(Irp, IO_NO_INCREMENT);
@@ -261,14 +261,50 @@
     return STATUS_UNSUCCESSFUL;
 }
 
-/*
- * @unimplemented
+static
+NTSTATUS
+NTAPI
+IrpCompletionRoutine(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp,
+    IN PVOID Context)
+{
+    KeSetEvent((PRKEVENT)Context, IO_NO_INCREMENT, FALSE);
+    return STATUS_SUCCESS;
+}
+
+
+/*
+ * @implemented
  */
 NTSTATUS NTAPI
 PcForwardIrpSynchronous(
     IN  PDEVICE_OBJECT DeviceObject,
     IN  PIRP Irp)
 {
-    UNIMPLEMENTED;
-    return STATUS_UNSUCCESSFUL;
-}
+    KEVENT Event;
+    PCExtension* DeviceExt;
+    NTSTATUS Status;
+
+    DPRINT1("PcForwardIrpSynchronous\n");
+
+    DeviceExt = (PCExtension*)DeviceObject->DeviceExtension;
+
+    /* initialize the notification event */
+    KeInitializeEvent(&Event, NotificationEvent, FALSE);
+
+    /* setup a completion routine */
+    IoSetCompletionRoutine(Irp, IrpCompletionRoutine, (PVOID)&Event, TRUE, FALSE, FALSE);
+
+    /* now call the driver */
+    Status = IoCallDriver(DeviceExt->PrevDeviceObject, Irp);
+    /* did the request complete yet */
+    if (Status == STATUS_PENDING)
+    {
+        /* not yet, lets wait a bit */
+        KeWaitForSingleObject(&Event, Executive, FALSE, FALSE, NULL);
+        Status = STATUS_SUCCESS;
+    }
+    DPRINT1("Returning status %x\n", Status);
+    return Status;
+}

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h?rev=38765&r1=38764&r2=38765&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/private.h [iso-8859-1] Wed Jan 14 15:47:54 2009
@@ -9,6 +9,7 @@
 
 #include <ntddk.h>
 #include <portcls.h>
+#define YDEBUG
 #include <debug.h>
 
 #include <portcls.h>
@@ -102,9 +103,13 @@
 typedef struct
 {
     PDEVICE_OBJECT PhysicalDeviceObject;
+    PDEVICE_OBJECT PrevDeviceObject;
     PCPFNSTARTDEVICE StartDevice;
     KSDEVICE_HEADER KsDeviceHeader;
     IAdapterPowerManagement * AdapterPowerManagement;
+    ULONG MaxSubDevices;
+    KSOBJECT_CREATE_ITEM * CreateItems;
+
 
     IResourceList* resources;
     LIST_ENTRY SubDeviceList;



More information about the Ros-diffs mailing list