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