KeRaiseUserException

NTSTATUS __stdcall KeRaiseUserException(INT64 ExceptionCode){
  NTSTATUS v1; 
  _ETHREAD *CurrentThread; 
  unsigned __int8 CurrentIrql; 
  unsigned __int8 v4; 
  _KTRAP_FRAME *TrapFrame; 

  v1 = ExceptionCode;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  CurrentIrql = KeGetCurrentIrql();
  v4 = 1;
  if( !CurrentIrql )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(1ui64);
  }
  TrapFrame = CurrentThread->Tcb.TrapFrame;
  if( TrapFrame )
  {
    if( (TrapFrame->SegCs & 1) != 0 )
    {
      *((_DWORD *)CurrentThread->Tcb.Teb + 176) = v1;
      TrapFrame->SegCs = 51;
      TrapFrame->_Rip = KeRaiseUserExceptionDispatcher;
      if( TrapFrame->ExceptionActive != 2 )
        KiSetupForInstrumentationReturn(TrapFrame, (UINT64)CurrentThread);
    }
  }
  if( CurrentIrql < v4 )
    __writecr8(CurrentIrql);
  return v1;
}

Referenced by:

ExHandleLogBadReference
NtClose
ObCloseHandleTableEntry
ObpCloseHandle
PspInsertThread