VfTriageAddDrivers
UINT64 __stdcall VfTriageAddDrivers(VOID *OpaqueLoaderBlock){
void *v3;
unsigned int v4;
unsigned int i;
_KLDR_DATA_TABLE_ENTRY *LoaderEntry;
_UNICODE_STRING *p_BaseDllName;
_VF_SUSPECT_DRIVER_ENTRY *Entry;
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 = *(void **)(*((_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 && (LoaderEntry->Flags & 0x8000000) == 0 )
{
p_BaseDllName = &LoaderEntry->BaseDllName;
DbgPrintEx(
0x5Du,
3u,
"VfTriageAddDrivers: Marking %wZ for verification when it is loaded\n",
&LoaderEntry->BaseDllName);
Entry = VfSuspectDriversAllocateEntry(p_BaseDllName);
if( Entry )
{
VfDriverLock();
VfSuspectDriversInsert(Entry);
VfDriverUnlock();
v4 = 1;
}
}
}
return v4;
}Referenced by:
No references.