VOID
IoDetachDevice(
IN OUT PDEVICE_OBJECT TargetDevice
);
IoDetachDevice releases an attachment between the caller’s device object and a lower driver’s device object.
IoDetachDevice decrements the reference count of the TargetDevice object. If the reference count goes to zero and the lower driver has been marked for an unload operation, the lower driver is unloaded.
Callers of IoDetachDevice must be running at IRQL PASSIVE_LEVEL.