PspTerminateProcessesJobCallback

INT64 __fastcall PspTerminateProcessesJobCallback(
        const _WNF_STATE_NAME *StateName,
        const _WNF_TYPE_ID *TypeId,
        const VOID *ExplicitScope,
        UINT64 *ChangeStamp,
        VOID *Buffer,
        UINT64 *BufferSize){
  int *v8; 
  __int64 v9; 
  char v10; 
  UINT8 v11; 
  _ETHREAD *CurrentThread; 
  __int64 v13; 
  char v14; 
  __int64 NextJobProcess; 
  __int64 v16; 
  int v18; 
  __int64 *ServerSiloGlobals; 
  PEJOB v20; 
  __int128 v21; 
  __int64 v22; 
  v21 = 0i64;
  v22 = 0i64;
  PsIsServerSilo((INT64)StateName, (volatile INT32 *)TypeId);
  if( v10 )
  {
    v18 = *v8;
    ServerSiloGlobals = PsGetServerSiloGlobals(v9);
    v11 = PspMarkServerSiloAsTerminating(v20);
    if( v11 )
      *((_DWORD *)ServerSiloGlobals + 279) = v18;
  }
  else
  {
    v11 = 0;
  }
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v13 = 0i64;
  v14 = 8 * (TypeId->TypeId.Data2 & 1) + 6;
  while( 1 )
  {
    NextJobProcess = PspGetNextJobProcess(StateName, CurrentThread, &v21, v13);
    v16 = NextJobProcess;
    if( !NextJobProcess )
      break;
    if( (*(_DWORD *)(NextJobProcess + 1120) & 0x800) == 0 )
      LOBYTE(TypeId->TypeId.Data2) |= 2u;
    PspRemoveProcessFromJobChain(NextJobProcess, 0i64, v14, TypeId->TypeId.Data1);
    v13 = v16;
  }
  if( v11 )
    PspCompleteServerSiloShutdown((PEJOB)StateName);
  return 0i64;
}

Referenced by:

No references.