Hartmut Birr wrote:
weiden(a)svn.reactos.com wrote:
I think this is not correct.
It is. A named object is removed from the object
namespace as soon as
the last handle got closed (not when the reference counter drops to 0!).
When you run WinObj from sysinternals and view the properties of some
devices loaded, you'll notice that the handle count is 0, which means
they have to be permanent objects, otherwise they would've been deleted
from the object name space.
If the name is permanent, IoDeleteDevice
isn't able to delete a device. Currently it exist a bug, which does also
prevent from deleting a device. IoDeleteDevice doesn't dereference the
driver object.
IoDeleteDevice certainly should convert the object to a temporary
object
then, which should cause it to be removed from the namespace if there's
no handles present. It should be rather easy to fix, I'll do it tonight.
Best Regards,
Thomas