convert the device object to a temporary device before deleting it

svn path=/trunk/; revision=14706
This commit is contained in:
Thomas Bluemel 2005-04-19 21:47:05 +00:00
parent 353f0bf39d
commit 377ffd2516
2 changed files with 15 additions and 0 deletions

View 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);
}

View 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);
}
}
/**********************************************************************