PipDeviceObjectListRemove
INT64 __stdcall PipDeviceObjectListRemove(_DEVICE_OBJECT_LIST *List, UINT64 Index){
unsigned int v3;
PVOID *v4;
unsigned int Count;
v3 = Index;
if( (unsigned int)Index >= List->Count )
return 3221225612i64;
v4 = (PVOID *)((char *)List + 24 * (unsigned int)Index);
ObfDereferenceObjectWithTag(v4[2], 0x4C706E50ui64);
if( ((_DWORD)v4[4] & 1) != 0 )
--List->TagCount;
Count = List->Count;
if( v3 < List->Count - 1 )
{
memmove((UINT8 *)v4 + 16, (UINT8 *)&List[1] + 16 * v3 + 8 * v3, 24i64 * (Count - v3 - 1));
Count = List->Count;
}
List->Count = Count - 1;
return 0i64;
}Referenced by:
IopRemoveCurrentRelationFromList
IopRemoveDeviceRelationsFromList