[disk] New ParentBus member
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 9 Jan 2011 22:53:22 +0000 (17:53 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Sun, 9 Jan 2011 22:53:22 +0000 (17:53 -0500)
Which allows for disk_pnp__query_capabilities_() to
become independent of WV_S_DEV_T and so it is renamed
to WvlDiskPnpQueryCapabilities_().

src/aoe/bus.c
src/include/disk.h
src/winvblock/disk/pnp.c
src/winvblock/filedisk/filedisk.c
src/winvblock/filedisk/grub4dos.c
src/winvblock/ramdisk/grub4dos.c
src/winvblock/ramdisk/memdisk.c

index eb68427..b96d6b0 100644 (file)
@@ -368,7 +368,8 @@ BOOLEAN STDCALL AoeBusAddDev(
       }
     WvlBusInitNode(AoeDisk->BusNode, AoeDisk->Pdo);
     /* Associate the parent bus. */
-    AoeDisk->Dev->Parent = AoeBusMain.Fdo;
+    AoeDisk->Dev->Parent = AoeDisk->disk->ParentBus = AoeBusMain.Fdo;
+
     AoeDisk->Pdo->Flags &= ~DO_DEVICE_INITIALIZING;
     /* Add the new PDO device to the bus' list of children. */
     WvlBusAddNode(&AoeBusMain, AoeDisk->BusNode);
index 4083eb3..6c39753 100644 (file)
@@ -144,6 +144,7 @@ struct WV_DISK_T {
     UINT32 Sectors;
     UINT32 SectorSize;
     UINT32 SpecialFileCount;
+    PDEVICE_OBJECT ParentBus;
     PVOID ext;
     PDRIVER_OBJECT DriverObj;
   };
index dbed2f3..8db199e 100644 (file)
@@ -43,7 +43,7 @@
 static WVL_F_DISK_PNP disk_pnp__query_dev_text_;
 static WVL_F_DISK_PNP WvlDiskPnpQueryDevRelations_;
 static WVL_F_DISK_PNP WvlDiskPnpQueryBusInfo_;
-static WVL_F_DISK_PNP disk_pnp__query_capabilities_;
+static WVL_F_DISK_PNP WvlDiskPnpQueryCapabilities_;
 static WVL_F_DISK_PNP disk_pnp__simple_;
 
 static NTSTATUS STDCALL disk_pnp__query_dev_text_(
@@ -193,7 +193,13 @@ static NTSTATUS STDCALL WvlDiskPnpQueryBusInfo_(
     return WvlIrpComplete(irp, irp->IoStatus.Information, status);
   }
 
-static NTSTATUS STDCALL disk_pnp__query_capabilities_(
+/* From driver.c */
+extern NTSTATUS STDCALL WvDriverGetDevCapabilities(
+    IN PDEVICE_OBJECT,
+    IN PDEVICE_CAPABILITIES
+  );
+
+static NTSTATUS STDCALL WvlDiskPnpQueryCapabilities_(
     IN PDEVICE_OBJECT dev_obj,
     IN PIRP irp,
     WV_SP_DISK_T disk
@@ -211,7 +217,7 @@ static NTSTATUS STDCALL disk_pnp__query_capabilities_(
         goto out;
       }
     status = WvDriverGetDevCapabilities(
-        disk->Dev->Parent,
+        disk->ParentBus,
         &ParentDeviceCapabilities
       );
     if (!NT_SUCCESS(status))
@@ -389,7 +395,7 @@ WVL_M_LIB NTSTATUS STDCALL disk_pnp__dispatch(
 
         case IRP_MN_QUERY_CAPABILITIES:
           DBG("IRP_MN_QUERY_CAPABILITIES\n");
-          return disk_pnp__query_capabilities_(DevObj, Irp, Disk);
+          return WvlDiskPnpQueryCapabilities_(DevObj, Irp, Disk);
 
         default:
           return disk_pnp__simple_(DevObj, Irp, Disk);
index 7dbf59b..f110286 100644 (file)
@@ -253,6 +253,7 @@ NTSTATUS STDCALL WvFilediskAttach(IN PIRP irp) {
         status = STATUS_UNSUCCESSFUL;
         goto err_add_child;
       }
+    filedisk->disk->ParentBus = filedisk->Dev->Parent;
 
     return STATUS_SUCCESS;
 
index 11d8ea0..52d02ec 100644 (file)
@@ -504,6 +504,7 @@ VOID filedisk_grub4dos__find(void) {
           /* Add the filedisk to the bus. */
           if (!WvBusAddDev(filedisk_ptr->disk->Dev))
             WvDevFree(filedisk_ptr->disk->Dev);
+          filedisk_ptr->disk->ParentBus = filedisk_ptr->Dev->Parent;
         } /* search for sector-mapped disks. */
       InterruptVector = &SafeMbrHookPtr->PrevHook;
     } /* walk the safe hook chain. */
index 1a2481c..13f48fe 100644 (file)
@@ -151,6 +151,7 @@ VOID WvRamdiskG4dFind(void) {
              /* Add the ramdisk to the bus. */
             if (!WvBusAddDev(ramdisk->disk->Dev))
               WvDevFree(ramdisk->disk->Dev);
+            ramdisk->disk->ParentBus = ramdisk->Dev->Parent;
           } /* while i */
         int_vector = &safe_mbr_hook->PrevHook;
       } /* while safe hook chain. */
index c746799..144d6bf 100644 (file)
@@ -108,6 +108,7 @@ static BOOLEAN STDCALL WvMemdiskCheckMbft_(
         WvDevFree(ramdisk->disk->Dev);
         return FALSE;
       }
+    ramdisk->disk->ParentBus = ramdisk->Dev->Parent;
     assoc_hook->Flags = 1;
     return TRUE;
   }