VslConnectSwInterrupt

NTSTATUS __stdcall VslConnectSwInterrupt(PVOID BugCheckParameter2, PVOID BugCheckParameter3){
  int v5; 
  VOID *Pool2; 
  __int64 v7; 
  int v8; 
  ULONG_PTR BugCheckParameter4; 
  UINT64 ProcessorNumber; 
  unsigned __int16 *v11[2]; 
  __int16 v12; 
  int v13; 
  __int16 v14; 
  INT64 result[10]; 
  INT64 a4[3]; 
  int v17; 
  __int64 *v18; 
  VOID *v19; 
  v13 = 0;
  v14 = 0;
  LODWORD(ProcessorNumber) = 0;
  memset((INT64)result, 0i64);
  if( !HvlQueryVsmConnection(0i64) )
    return -1070268386;
  if( (unsigned __int64)BugCheckParameter3 > 0x1FA000 )
    KeBugCheckEx(0x13Du, 0xFFFFFFFFui64, (ULONG_PTR)BugCheckParameter2, (ULONG_PTR)BugCheckParameter3, 0x1FA000ui64);
  if( BugCheckParameter2 )
  {
    v5 = VslpLockPagesForTransfer((INT64)result, (INT64)BugCheckParameter2, (unsigned int)BugCheckParameter3, 0i64, 0);
    if( v5 < 0 )
      KeBugCheckEx(0x13Du, 0xFFFFFFFEui64, (ULONG_PTR)BugCheckParameter2, (ULONG_PTR)BugCheckParameter3, v5);
  }
  memset((INT64)a4, 0i64);
  a4[1] = result[0];
  a4[2] = result[7];
  v18 = VslpTraceLog;
  if( KiAreCodePatchesAllowed() )
  {
    Pool2 = VslpHotpatchLog;
    if( !VslpHotpatchLog )
    {
      Pool2 = ExAllocatePool2((unsigned int)((_DWORD)VslpHotpatchLog + 64), 0x50008ui64, 0x676F4C48ui64);
      VslpHotpatchLog = Pool2;
    }
    v19 = Pool2;
  }
  v11[1] = (unsigned __int16 *)KeActiveProcessors.Bitmap[0];
  v11[0] = (unsigned __int16 *)&KeActiveProcessors;
  v12 = 0;
  while( !(unsigned int)KeEnumerateNextProcessor(&ProcessorNumber, v11) )
  {
    KeGetPrcb((unsigned int)ProcessorNumber);
    if( ((*(_QWORD *)(v7 + 33880) - 1i64) & *(_QWORD *)(v7 + 33880)) != 0 )
    {
      v17 |= 1u;
      break;
    }
  }
  if( HvlIsCoreSharingPossible() )
    v17 = v8 | 1;
  BugCheckParameter4 = VslpEnterIumSecureMode(2u, 51, 0i64, (INT64)a4);
  if( BugCheckParameter2 )
    VslpUnlockPagesForTransfer((INT64 **)result);
  if( (BugCheckParameter4 & 0x80000000) != 0i64 )
    KeBugCheckEx(
      0x13Du,
      0xFFFFFFFDui64,
      (ULONG_PTR)BugCheckParameter2,
      (ULONG_PTR)BugCheckParameter3,
      BugCheckParameter4);
  return BugCheckParameter4;
}

Referenced by:

KiConnectSwInterrupt
PsNotifyCoreDriversInitialized