SeUnregisterLogonSessionTerminatedRoutine

INT64 __stdcall SeUnregisterLogonSessionTerminatedRoutine(INT64 *CallbackRoutine, _LUID *a2){
  unsigned int v2; 
  _ETHREAD *CurrentThread; 
  INT64 *v6; 
  PVOID *v7; 
  v2 = 0;
  if( !CallbackRoutine )
    return 3221225485i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquireFastMutexUnsafe(&SepRmNotifyMutex);
  v6 = (INT64 *)SeFileSystemNotifyRoutinesHead;
  v7 = &SeFileSystemNotifyRoutinesHead;
  if( !SeFileSystemNotifyRoutinesHead )
    goto LABEL_8;
  do
  {
    if( (INT64 *)v6[1] == CallbackRoutine )
      break;
    v7 = (PVOID *)v6;
    v6 = (INT64 *)*v6;
  }
  while( v6 );
  if( v6 )
  {
    *v7 = (PVOID)*v6;
    ExReleaseFastMutexUnsafe(&SepRmNotifyMutex);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    ExFreePoolWithTag(v6, 0);
  }
  else
  {
LABEL_8:
    ExReleaseFastMutexUnsafe(&SepRmNotifyMutex);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    return(unsigned int)-1073741275;
  }
  return v2;
}

Referenced by:

No references.