IoDetachDevice
VOID *__stdcall IoDetachDevice(PDEVICE_OBJECT TargetDevice){
INT64 v1;
INT64 v2;
UINT8 v4;
_DEVOBJ_EXTENSION *DeviceObjectExtension;
VOID *result;
VOID *retaddr;
v4 = KeAcquireQueuedSpinLock(10i64, v1, v2);
if( (MmVerifierData & 0x10) != 0 )
IovDetachDevice(TargetDevice, retaddr);
TargetDevice->AttachedDevice->DeviceObjectExtension->AttachedTo = 0i64;
DeviceObjectExtension = TargetDevice->DeviceObjectExtension;
TargetDevice->AttachedDevice = 0i64;
if( (DeviceObjectExtension->ExtensionFlags & 7) == 0 || TargetDevice->ReferenceCount )
KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, v4);
else
IopCompleteUnloadOrDelete(TargetDevice, 0, v4);
return result;
}Referenced by:
ViFilterDispatchPnp