Do not create a new device node if we already know the PDO
authorHervé Poussineau <hpoussin@reactos.org>
Tue, 12 Jun 2007 08:38:32 +0000 (08:38 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Tue, 12 Jun 2007 08:38:32 +0000 (08:38 +0000)
svn path=/trunk/; revision=27153

reactos/ntoskrnl/io/iomgr/driver.c
reactos/ntoskrnl/io/pnpmgr/plugplay.c
reactos/ntoskrnl/io/pnpmgr/pnpmgr.c

index 3353bcb..ac1f5aa 100644 (file)
@@ -135,7 +135,7 @@ IopGetDriverObject(
 
    if (!NT_SUCCESS(Status))
    {
-      DPRINT1("Failed to reference driver object, status=0x%08x\n", Status);
+      DPRINT("Failed to reference driver object, status=0x%08x\n", Status);
       return Status;
    }
 
index 4808f6b..e326873 100644 (file)
@@ -694,7 +694,7 @@ IopDeviceStatus(PPLUGPLAY_CONTROL_STATUS_DATA StatusData)
     if (DeviceObject == NULL)
         return STATUS_NO_SUCH_DEVICE;
 
-    DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
+    DeviceNode = IopGetDeviceNode(DeviceObject);
 
     switch (Operation)
     {
index 8401a90..b7468d7 100644 (file)
@@ -2574,6 +2574,11 @@ IopInvalidateDeviceRelations(
      */
     for (i = 0; i < DeviceRelations->Count; i++)
     {
+        if (IopGetDeviceNode(DeviceRelations->Objects[i]) != NULL)
+        {
+            ObDereferenceObject(DeviceRelations->Objects[i]);
+            continue;
+        }
         Status = IopCreateDeviceNode(
             DeviceNode,
             DeviceRelations->Objects[i],