PipDeviceObjectListRemove
NTSTATUS __stdcall PipDeviceObjectListRemove(_DEVICE_OBJECT_LIST *List, UINT64 Index){
unsigned int v3;
VOID **v4;
unsigned int Count;
v3 = Index;
if( (unsigned int)Index >= List->Count )
return -1073741684;
v4 = (VOID **)((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(v4 + 2, (char *)&List[1] + 16 * v3 + 8 * v3, 24 * (Count - v3 - 1));
Count = List->Count;
}
List->Count = Count - 1;
return 0;
}Referenced by:
IopRemoveCurrentRelationFromList
IopRemoveDeviceRelationsFromList
IopRemoveRelationFromList