ExpCreateCrossVmEvent

INT64 __fastcall ExpCreateCrossVmEvent(_QWORD *a1, UINT64 a2, INT64 a3, UINT64 a4, INT64 a5, INT64 a6, CHAR a7){
  struct EX_RUNDOWN_REF *v8; 
  unsigned int v9; 
  unsigned int v11; 
  UINT64 ExtensionTable; 
  int v13; 
  __int64 v15; 
  v15 = 0i64;
  v8 = ExpCrossVmIntExtensionHostRoot;
  v9 = a4;
  v11 = a2;
  if( !a6 )
    v8 = ExpCrossVmIntExtensionHostGuest;
  ExtensionTable = ExGetExtensionTable(v8);
  if( ExtensionTable )
  {
    v13 = (*(__int64(__fastcall **)(__int64 *, _QWORD, INT64, _QWORD, INT64, INT64, CHAR))(ExtensionTable + 8))(
            &v15,
            v11,
            a3,
            v9,
            a5,
            a6,
            a7);
    if( v13 >= 0 )
      *a1 = v15;
    ExReleaseExtensionTable(v8);
  }
  else
  {
    return(unsigned int)-1073741822;
  }
  return(unsigned int)v13;
}

Referenced by:

NtCreateCrossVmEvent