PipDeviceObjectListAdd

VOID __stdcall PipDeviceObjectListAdd(
        GUID *SourceId,
        UINT64 ControlCode,
        UINT8 Level,
        UINT64 MatchAnyKeyword,
        UINT64 MatchAllKeyword,
        EVENT_FILTER_DESCRIPTOR *FilterData,
        PVOID CallbackContext){
  _DEVICE_OBJECT_LIST *v7; 
  int v8; 
  _DEVICE_RELATION_LEVEL v9; 
  __int64 Count; 
  int v13; 
  _DEVICE_OBJECT_LIST *List; 
  v8 = MatchAnyKeyword;
  List = *(_DEVICE_OBJECT_LIST **)&SourceId->Data1;
  v7 = List;
  v9 = Level;
  if( List->Count + 1 != List->MaxCount || (PipGrowDeviceObjectList(&List), v7 = List, v13 >= 0) )
  {
    Count = v7->Count;
    ObfReferenceObjectWithTag((PVOID)ControlCode, 0x4C706E50u);
    v7->Devices[Count].Flags = 0;
    v7->Devices[Count].DeviceObject = (_DEVICE_OBJECT *)ControlCode;
    v7->Devices[Count].RelationLevel = v9;
    if( v8 == 1 )
    {
      v7->Devices[Count].Flags = 1;
      ++v7->TagCount;
    }
    ++v7->Count;
  }
  *(_QWORD *)&SourceId->Data1 = v7;
}

Referenced by:

PipGrowDeviceObjectList