[winvblock/probe] Move disk probe routine into bus
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Tue, 18 May 2010 00:59:12 +0000 (20:59 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Tue, 18 May 2010 00:59:12 +0000 (20:59 -0400)
It makes some sense that we can delay our RAM disk probing
until the bus is actually queried for children.  This means
that the DriverEntry() returns sooner.

src/winvblock/bus/bus.c
src/winvblock/bus/pnp.c
src/winvblock/probe.c

index 97ea015..7e69692 100644 (file)
@@ -36,7 +36,6 @@
 #include "bus_pnp.h"
 #include "bus_dev_ctl.h"
 #include "debug.h"
-#include "probe.h"
 
 PDEVICE_OBJECT bus_fdo = NULL;
 
@@ -308,7 +307,6 @@ Bus_AddDevice (
 #ifdef RIS
   bus_dev_ext_ptr->State = Started;
 #endif
-  probe__disks (  );
   DBG ( "Exit\n" );
   return STATUS_SUCCESS;
 }
index 0e7eb3e..bcecd37 100644 (file)
@@ -35,6 +35,7 @@
 #include "disk.h"
 #include "bus.h"
 #include "debug.h"
+#include "probe.h"
 
 static NTSTATUS STDCALL
 Bus_IoCompletionRoutine (
@@ -125,6 +126,7 @@ irp__handler_decl ( bus_pnp__query_dev_relations )
       *completion_ptr = TRUE;
       return status;
     }
+  probe__disks (  );
   count = 0;
   walker = ( disk__type_ptr ) bus_ptr->first_child_ptr;
   while ( walker != NULL )
index 728aa2e..e961412 100644 (file)
@@ -77,6 +77,10 @@ probe__disks (
   void
  )
 {
+  static winvblock__bool probed = FALSE;
+  if ( probed )
+    return;
   memdisk__find (  );
   grub4dos__find (  );
+  probed = TRUE;
 }