VfSuspectDriversUnloadCallback
VOID __fastcall VfSuspectDriversUnloadCallback(_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
INT64 v1;
INT64 v2;
_VF_SUSPECT_DRIVER_ENTRY *i;
VfDriverLock((INT64)DataTableEntry, v1, v2);
if( RtlEqualUnicodeString((UNICODE_STRING *)&VfTcpIpName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfTcpIpDllBase = 0i64;
}
else if( RtlEqualUnicodeString((UNICODE_STRING *)&VfTdxName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfTdxDllBase = 0i64;
}
else if( RtlEqualUnicodeString((UNICODE_STRING *)VfMrxsmbName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfMrxsmbDllBase = 0i64;
}
else if( RtlEqualUnicodeString((UNICODE_STRING *)&VfTmName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfTmDllBase = 0i64;
}
else if( RtlEqualUnicodeString((UNICODE_STRING *)&VfWin32kName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfWin32kDllBase = 0i64;
}
else if( RtlEqualUnicodeString((UNICODE_STRING *)&VfKsName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) == 1 )
{
VfKsDllBase = 0i64;
}
for( i = VfSuspectDriversList;
i != (_VF_SUSPECT_DRIVER_ENTRY *)&VfSuspectDriversList;
i = (_VF_SUSPECT_DRIVER_ENTRY *)i->Links.Flink )
{
if( RtlEqualUnicodeString(&i->BaseName, (UNICODE_STRING *)((char *)DataTableEntry + 88), 1u) )
{
++dword_140C2A654;
++i->Unloads;
VfNotifyVerifierExtensions(2, (__int64)DataTableEntry);
break;
}
}
ViDriversLoadLockOwner = 0i64;
KeReleaseMutex(&ViDriversLoadLock, 0);
}Referenced by:
VfDriverUnloadImage