convert the device object to a temporary device before deleting it
authorThomas Bluemel <thomas@reactsoft.com>
Tue, 19 Apr 2005 21:47:05 +0000 (21:47 +0000)
committerThomas Bluemel <thomas@reactsoft.com>
Tue, 19 Apr 2005 21:47:05 +0000 (21:47 +0000)
svn path=/trunk/; revision=14706

reactos/ntoskrnl/io/device.c
reactos/ntoskrnl/ob/ntobj.c

index 7e42117..6867df9 100644 (file)
@@ -557,6 +557,15 @@ IoDeleteDevice(PDEVICE_OBJECT DeviceObject)
    
    /* I guess this should be removed later... but it shouldn't cause problems */
    DeviceObject->DeviceObjectExtension->ExtensionFlags |= DOE_DELETE_PENDING;
+   
+   /* Make the object temporary. This should automatically remove the device
+      from the namespace */
+   ObMakeTemporaryObject(DeviceObject);
+   
+   /* Dereference the driver object */
+   ObDereferenceObject(DeviceObject->DriverObject);
+   
+   /* Remove the keep-alive reference */
    ObDereferenceObject(DeviceObject);
 }
 
index 048936a..b6553f1 100644 (file)
@@ -224,6 +224,12 @@ ObpSetPermanentObject (IN PVOID ObjectBody, IN BOOLEAN Permanent)
 
   ObjectHeader = BODY_TO_HEADER(ObjectBody);
   ObjectHeader->Permanent = Permanent;
+  
+  if (ObjectHeader->HandleCount == 0 && !Permanent && ObjectHeader->Parent != NULL)
+  {
+    /* Remove the object from the namespace */
+    ObpRemoveEntryDirectory(ObjectHeader);
+  }
 }
 
 /**********************************************************************