NtFlushInstallUILanguage

NTSTATUS __stdcall NtFlushInstallUILanguage(UINT64 InstallUILanguage, UINT64 SetComittedFlag){
  int v2; 
  NTSTATUS v3; 
  int v4; 
  char PreviousMode; 
  INT64 v6; 
  NTSTATUS result; 
  _ETHREAD *CurrentThread; 

  v2 = SetComittedFlag;
  v3 = 0;
  v4 = InstallUILanguage;
  PreviousMode = KeGetCurrentThread()->PreviousMode;
  if( !PreviousMode )
    return -1073741823;
  if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeTcbPrivilege, PreviousMode) )
    return -1073741790;
  if( PsUILanguageComitted )
  {
    if( v4 == (unsigned __int16)PsInstallUILanguageId )
      return 0;
    return -1073741823;
  }
  if( *(&stru_140CF2E80 + 658)
    || (result = MUIInitializeResourceLock((_ERESOURCE **)&stru_140CF2E80 + 658), (result & 0xC0000000) != -1073741824) )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    ExAcquireResourceExclusiveLite(*(&stru_140CF2E80 + 658), 1, v6);
    if( v2 )
      PsUILanguageComitted = 1;
    if( (_WORD)v4 != PsInstallUILanguageId )
    {
      PsInstallUILanguageId = v4;
      PsMachineUILanguageId = v4;
      v3 = MigrateOOBELanguageToInstallationLanguage();
    }
    ExReleaseResourceLite(*(&stru_140CF2E80 + 658));
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    return v3;
  }
  return result;
}

Referenced by:

No references.