IoInvalidateDeviceRelations
VOID __stdcall IoInvalidateDeviceRelations(DEVICE_OBJECT *DeviceObject, DEVICE_RELATION_TYPE Type){
__int64 v3;
int v4;
__int16 *v5;
_WORD *v6;
PVOID *v7;
PVOID *v8;
__int64 v9;
_WORD *v10;
__int64 v11;
_WORD *v12;
__int64 v13;
if( !DeviceObject )
goto LABEL_26;
v3 = *(_QWORD *)(*((_QWORD *)DeviceObject + 39) + 40i64);
if( !v3 || (*(_DWORD *)(v3 + 396) & 0x20000) != 0 )
{
IoAddTriageDumpDataBlock(DeviceObject, *((unsigned __int16 *)DeviceObject + 1));
v5 = (__int16 *)*((_QWORD *)DeviceObject + 1);
if( v5 )
{
IoAddTriageDumpDataBlock(v5, (unsigned int)v5[1]);
v6 = (_WORD *)(*((_QWORD *)DeviceObject + 1) + 56i64);
if( *v6 )
{
IoAddTriageDumpDataBlock(v6, 2ui64);
IoAddTriageDumpDataBlock(
*(PVOID *)(*((_QWORD *)DeviceObject + 1) + 64i64),
*(unsigned __int16 *)(*((_QWORD *)DeviceObject + 1) + 56i64));
}
}
v7 = *(PVOID **)(*((_QWORD *)DeviceObject + 39) + 40i64);
if( v7 )
{
v8 = v7 + 5;
IoAddTriageDumpDataBlock(v7, 0x310ui64);
if( *(_WORD *)v8 )
{
IoAddTriageDumpDataBlock(v8, 2ui64);
IoAddTriageDumpDataBlock(v8[1], *(unsigned __int16 *)v8);
}
v9 = *((_QWORD *)DeviceObject + 39);
v10 = (_WORD *)(*(_QWORD *)(v9 + 40) + 56i64);
if( *v10 )
{
IoAddTriageDumpDataBlock(v10, 2ui64);
IoAddTriageDumpDataBlock(
*(PVOID *)(*(_QWORD *)(*((_QWORD *)DeviceObject + 39) + 40i64) + 64i64),
*(unsigned __int16 *)(*(_QWORD *)(*((_QWORD *)DeviceObject + 39) + 40i64) + 56i64));
v9 = *((_QWORD *)DeviceObject + 39);
}
v11 = *(_QWORD *)(*(_QWORD *)(v9 + 40) + 16i64);
if( v11 )
{
v12 = (_WORD *)(v11 + 56);
if( *v12 )
{
IoAddTriageDumpDataBlock(v12, 2ui64);
v13 = *(_QWORD *)(*(_QWORD *)(*((_QWORD *)DeviceObject + 39) + 40i64) + 16i64);
IoAddTriageDumpDataBlock(*(PVOID *)(v13 + 64), *(unsigned __int16 *)(v13 + 56));
}
}
}
LABEL_26:
KeBugCheckEx(0xCAu, 2ui64, (ULONG_PTR)DeviceObject, 0i64, 0i64);
}
switch( Type )
{
case BusRelations:
goto LABEL_8;
case EjectionRelations:
v4 = 20;
goto LABEL_9;
case PowerRelations:
v4 = 5;
goto LABEL_9;
case SingleBusRelations:
LABEL_8:
v4 = 9 - (Type != BusRelations);
LABEL_9:
PnpRequestDeviceAction(DeviceObject, (_PNP_DEVICE_ACTION_REQUEST)v4, 0, 0i64, 0i64, 0i64);
return;
case TransportRelations:
v4 = 19;
goto LABEL_9;
}
}Referenced by:
IopPnPDispatch
PiProfileUpdateDeviceTreeCallback
PiSwCloseDevice
PiSwGetChildPdo
PiSwIrpStartCreateWorker
PiSwProcessParentStartIrp
PiSwProcessRemove