VfSuspectDriversUnloadCallback

VOID __stdcall VfSuspectDriversUnloadCallback(_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
  _VF_SUSPECT_DRIVER_ENTRY *i; 

  VfDriverLock();
  if( (unsigned __int8)RtlEqualUnicodeString(&VfTcpIpName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfTcpIpDllBase = 0i64;
  }
  else if( (unsigned __int8)RtlEqualUnicodeString(&VfTdxName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfTdxDllBase = 0i64;
  }
  else if( (unsigned __int8)RtlEqualUnicodeString(&VfMrxsmbName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfMrxsmbDllBase = 0i64;
  }
  else if( (unsigned __int8)RtlEqualUnicodeString(&VfTmName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfTmDllBase = 0i64;
  }
  else if( (unsigned __int8)RtlEqualUnicodeString(&VfWin32kName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfWin32kDllBase = 0i64;
  }
  else if( (unsigned __int8)RtlEqualUnicodeString(&VfKsName, &DataTableEntry->BaseDllName, 1u) == 1 )
  {
    VfKsDllBase = 0i64;
  }
  for( i = VfSuspectDriversList;
        i != (_VF_SUSPECT_DRIVER_ENTRY *)&VfSuspectDriversList;
        i = (_VF_SUSPECT_DRIVER_ENTRY *)i->Links.Flink )
  {
    if( (unsigned __int8)RtlEqualUnicodeString(&i->BaseName, &DataTableEntry->BaseDllName, 1u) )
    {
      ++dword_140C2A654;
      ++i->Unloads;
      VfNotifyVerifierExtensions(XdvUnloadImageEvent, DataTableEntry);
      break;
    }
  }
  ViDriversLoadLockOwner = 0i64;
  KeReleaseMutex(&ViDriversLoadLock, 0);
}

Referenced by:

VfDriverUnloadImage