PspTerminateProcessesJobCallback

NTSTATUS __stdcall PspTerminateProcessesJobCallback(
        const _WNF_STATE_NAME *StateName,
        const _WNF_TYPE_ID *TypeId,
        const VOID *ExplicitScope,
        UINT64 *ChangeStamp,
        VOID *Buffer,
        UINT64 *BufferSize){
  int *v8; 
  _EJOB *v9; 
  char v10; 
  UINT8 v11; 
  _ETHREAD *CurrentThread; 
  CHAR i; 
  _EPROCESS *v14; 
  int v16; 
  _ESERVERSILO_GLOBALS *ServerSiloGlobals; 
  _EJOB *v18; 

  PsIsServerSilo((INT64)StateName, (INT32 *)TypeId);
  if( v10 )
  {
    v16 = *v8;
    ServerSiloGlobals = PsGetServerSiloGlobals(v9);
    v11 = PspMarkServerSiloAsTerminating(v18);
    if( v11 )
      ServerSiloGlobals->ExitStatus = v16;
  }
  else
  {
    v11 = 0;
  }
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  for( i = 8 * (TypeId->TypeId[0].Data2 & 1) + 6; ; PspRemoveProcessFromJobChain(v14, 0i64, i, TypeId->TypeId[0].Data1) )
  {
    LODWORD(v14) = PspGetNextJobProcess((_EJOB *)StateName, CurrentThread);
    if( !v14 )
      break;
    if( (v14->Flags2 & 0x800) == 0 )
      LOBYTE(TypeId->TypeId[0].Data2) |= 2u;
  }
  if( v11 )
    PspCompleteServerSiloShutdown((_EJOB *)StateName);
  return 0;
}

Referenced by:

No references.