IopAddRelationToList
VOID __fastcall IopAddRelationToList(_FILE_OBJECT *a1, _SHARE_ACCESS *a2){
_DEVICE_TAGGED_FOR_REMOVAL v2;
_DEVICE_TAGGED_FOR_REMOVAL v3;
__int64 v5;
_DEVICE_OBJECT *v6;
_DEVICE_RELATION_LEVEL v7;
char v8;
_DEVICE_RELATION_LEVEL v9;
v3 = v2;
if( a2 )
v5 = *(_QWORD *)(*(_QWORD *)&a2[11].Readers + 40i64);
else
v5 = 0i64;
if( v5 )
{
PipIsDeviceInDeviceObjectList();
if( v8 )
{
v9 = MEMORY[8];
if( v7 > MEMORY[8] )
v9 = v7;
MEMORY[8] = v9;
if( v3 == DEVICE_TAGGED )
{
++*(_DWORD *)(*(_QWORD *)&a1->Type + 8i64);
MEMORY[0x10] |= 1u;
}
}
else if( PipDeviceObjectListAdd((_DEVICE_OBJECT_LIST **)a1, v6, v7, v3) >= 0 )
{
LOBYTE(a1->DeviceObject) = 0;
}
}
}Referenced by:
IopMergeRelationLists
PnpCancelRemoveOnHungDevices
PnpInvalidateRelationsInList
PnpProcessRelation