IopInsertRemoveDevice
VOID __stdcall IopInsertRemoveDevice(_DRIVER_OBJECT *DriverObject, _DEVICE_OBJECT *DeviceObject, UINT8 Insert){
KIRQL v6;
_QWORD *i;
v6 = KeAcquireQueuedSpinLock(0xAui64);
if( Insert )
{
*((_QWORD *)DeviceObject + 2) = DriverObject->DeviceObject;
DriverObject->DeviceObject = DeviceObject;
}
else
{
for( i = (_QWORD *)(*((_QWORD *)DeviceObject + 1) + 8i64);
(_DEVICE_OBJECT *)*i != DeviceObject;
i = (_QWORD *)(*i + 16i64) )
{
;
}
*i = *((_QWORD *)DeviceObject + 2);
}
KeReleaseQueuedSpinLock(0xAui64, v6);
}Referenced by:
IoCreateDevice
IopCompleteUnloadOrDelete