PspReferenceTokenForNewProcess

NTSTATUS __stdcall PspReferenceTokenForNewProcess(
        _EPROCESS *ParentProcess,
        VOID *TokenHandle,
        _KPROCESSOR_MODE PreviousMode,
        VOID **NewToken){
  PVOID v5; 
  NTSTATUS result; 
  PVOID Object; 

  if( !TokenHandle )
  {
    if( ParentProcess )
    {
      v5 = PsReferencePrimaryToken(ParentProcess);
    }
    else
    {
      v5 = PspBootAccessToken;
      ObfReferenceObject(PspBootAccessToken);
    }
    goto LABEL_4;
  }
  Object = 0i64;
  result = ObReferenceObjectByHandle(TokenHandle, 1ui64, (_OBJECT_TYPE *)SeTokenObjectType, PreviousMode, &Object, 0i64);
  v5 = Object;
  if( result >= 0 )
  {
LABEL_4:
    *NewToken = v5;
    return 0;
  }
  return result;
}

Referenced by:

NtCreateUserProcess
PspCreateProcess