The IoDetachDevice routine releases an attachment between the caller’s device object and a lower driver’s device object.
VOID
IoDetachDevice(
IN OUT PDEVICE_OBJECT TargetDevice
);
None
Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.
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.