[driver,bus] Remove WvBusPower
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 2 Jan 2011 23:02:51 +0000 (18:02 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 2 Jan 2011 23:02:51 +0000 (18:02 -0500)
src/winvblock/bus.c
src/winvblock/driver.c

index f098364..7f4de5f 100644 (file)
@@ -67,7 +67,6 @@ PETHREAD WvBusThread = NULL;
 /* Forward declarations. */
 WV_F_DEV_DISPATCH WvBusSysCtl;
 WV_F_DEV_CTL WvBusDevCtl;
 /* Forward declarations. */
 WV_F_DEV_DISPATCH WvBusSysCtl;
 WV_F_DEV_CTL WvBusDevCtl;
-WV_F_DEV_DISPATCH WvBusPower;
 WV_F_DEV_PNP WvBusPnp;
 WVL_F_BUS_PNP WvBusPnpQueryDevText;
 
 WV_F_DEV_PNP WvBusPnp;
 WVL_F_BUS_PNP WvBusPnpQueryDevText;
 
@@ -134,11 +133,6 @@ NTSTATUS STDCALL WvBusSysCtl(IN WV_SP_DEV_T dev, IN PIRP irp) {
     return WvlBusSysCtl(&WvBus, irp);
   }
 
     return WvlBusSysCtl(&WvBus, irp);
   }
 
-/* Pass a power IRP to the bus. */
-NTSTATUS STDCALL WvBusPower(IN WV_SP_DEV_T dev, IN PIRP irp) {
-    return WvlBusPower(&WvBus, irp);
-  }
-
 /* Pass an IRP_MJ_PNP to the bus. */
 NTSTATUS STDCALL WvBusPnp(
     IN WV_SP_DEV_T dev,
 /* Pass an IRP_MJ_PNP to the bus. */
 NTSTATUS STDCALL WvBusPnp(
     IN WV_SP_DEV_T dev,
index 47d617a..3888865 100644 (file)
@@ -52,7 +52,6 @@ extern UNICODE_STRING WvBusDosname;
 extern PETHREAD WvBusThread;
 extern WV_F_DEV_DISPATCH WvBusSysCtl;
 extern WV_F_DEV_CTL WvBusDevCtl;
 extern PETHREAD WvBusThread;
 extern WV_F_DEV_DISPATCH WvBusSysCtl;
 extern WV_F_DEV_CTL WvBusDevCtl;
-extern WV_F_DEV_DISPATCH WvBusPower;
 extern WV_F_DEV_PNP WvBusPnp;
 extern WVL_F_BUS_PNP WvBusPnpQueryDevText;
 extern NTSTATUS STDCALL WvBusEstablish(IN PUNICODE_STRING);
 extern WV_F_DEV_PNP WvBusPnp;
 extern WVL_F_BUS_PNP WvBusPnpQueryDevText;
 extern NTSTATUS STDCALL WvBusEstablish(IN PUNICODE_STRING);
@@ -144,7 +143,7 @@ static NTSTATUS STDCALL WvAttachFdo(
     PLIST_ENTRY walker;
     PDEVICE_OBJECT fdo = NULL;
     static WV_S_DEV_IRP_MJ irp_mj = {
     PLIST_ENTRY walker;
     PDEVICE_OBJECT fdo = NULL;
     static WV_S_DEV_IRP_MJ irp_mj = {
-        WvBusPower,
+        (WV_FP_DEV_DISPATCH) 0,
         WvBusSysCtl,
         WvBusDevCtl,
         (WV_FP_DEV_SCSI) 0,
         WvBusSysCtl,
         WvBusDevCtl,
         (WV_FP_DEV_SCSI) 0,
@@ -318,12 +317,16 @@ static NTSTATUS WvIrpPower(
     IN PDEVICE_OBJECT dev_obj,
     IN PIRP irp
   ) {
     IN PDEVICE_OBJECT dev_obj,
     IN PIRP irp
   ) {
-    /* WvDevFromDevObj() checks for a NULL dev_obj */
-    WV_SP_DEV_T dev = WvDevFromDevObj(dev_obj);
+    WV_SP_DEV_T dev;
 
     #ifdef DEBUGIRPS
     Debug_IrpStart(dev_obj, irp);
     #endif
 
     #ifdef DEBUGIRPS
     Debug_IrpStart(dev_obj, irp);
     #endif
+    /* Check for a bus IRP. */
+    if (dev_obj == WvBus.Fdo)
+      return WvlBusPower(&WvBus, irp);
+    /* WvDevFromDevObj() checks for a NULL dev_obj */
+    dev = WvDevFromDevObj(dev_obj);
     /* Check that the device exists. */
     if (!dev || dev->State == WvDevStateDeleted) {
         /* Even if it doesn't, a power IRP is important! */
     /* Check that the device exists. */
     if (!dev || dev->State == WvDevStateDeleted) {
         /* Even if it doesn't, a power IRP is important! */