VfTriageAddDrivers

UINT64 __fastcall VfTriageAddDrivers(VOID *OpaqueLoaderBlock){
  _DWORD *v3; 
  unsigned int v4; 
  unsigned int i; 
  char *LoaderEntry; 
  _UNICODE_STRING *v7; 
  INT64 v8; 
  INT64 v9; 
  _VF_SUSPECT_DRIVER_ENTRY *Entry; 
  INT64 v11; 
  UINT64 DriverCount; 
  LODWORD(DriverCount) = 0;
  if( (VerifierTriageActionTaken & 0x40000000) == 0 )
  {
    DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: no suspect drivers will be selected for verification.\n");
    return 0i64;
  }
  DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: will select target drivers for verification.\n");
  v3 = *(_DWORD **)(*((_QWORD *)OpaqueLoaderBlock + 30) + 40i64);
  if( TriageGetDriverCount(v3, &DriverCount) < 0 )
    return 0i64;
  v4 = 0;
  for( i = 0; i < (unsigned int)DriverCount; ++i )
  {
    LoaderEntry = TriageGetLoaderEntry(v3, i);
    if( LoaderEntry && (*((_DWORD *)LoaderEntry + 26) & 0x8000000) == 0 )
    {
      v7 = (_UNICODE_STRING *)(LoaderEntry + 88);
      DbgPrintEx(0x5Du, 3u, "VfTriageAddDrivers: Marking %wZ for verification when it is loaded\n", LoaderEntry + 88);
      Entry = VfSuspectDriversAllocateEntry(v7);
      if( Entry )
      {
        VfDriverLock(v9, v8, v11);
        VfSuspectDriversInsert(Entry);
        VfDriverUnlock();
        v4 = 1;
      }
    }
  }
  return v4;
}

Referenced by:

VfInitBootDriversLoaded