IopDeleteDriver
VOID __stdcall IopDeleteDriver(PVOID Object){
_QWORD *v2;
_QWORD *v3;
void *v4;
_QWORD *v5;
void *v6;
void *v7;
void *v8;
v2 = *(_QWORD **)(*((_QWORD *)Object + 6) + 40i64);
if( v2 )
{
do
{
v3 = (_QWORD *)*v2;
ExFreePoolWithTag(v2, 0);
v2 = v3;
}
while( v3 );
}
if( (*((_DWORD *)Object + 4) & 0x200) != 0 )
IoUnregisterPriorityCallback((_DRIVER_OBJECT *)Object);
if( *((_QWORD *)Object + 5) )
{
KeFlushQueuedDpcs();
MmUnloadSystemImage(*((VOID **)Object + 5));
PnpRequestDeviceAction(*((_DEVICE_OBJECT **)IopRootDeviceNode + 4), ClearProblem, 0, 0x26ui64, 0i64, 0i64);
}
v4 = (void *)*((_QWORD *)Object + 8);
if( v4 )
ExFreePoolWithTag(v4, 0);
v5 = (_QWORD *)*((_QWORD *)Object + 6);
v6 = (void *)v5[4];
if( v6 )
{
ExFreePoolWithTag(v6, 0);
v5 = (_QWORD *)*((_QWORD *)Object + 6);
}
v7 = (void *)v5[6];
if( v7 )
{
ExFreePoolWithTag(v7, 0);
v5 = (_QWORD *)*((_QWORD *)Object + 6);
}
v8 = (void *)v5[7];
if( v8 )
ExFreePoolWithTag(v8, 0);
}Referenced by:
No references.