SepCopyClientTokenAndSetSilo

INT64 __stdcall SepCopyClientTokenAndSetSilo(
        PVOID Token,
        SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
        _EJOB *ServerSilo,
        PVOID *DuplicateToken){
  INT64 result; 
  int v7; 
  unsigned int ServerSiloServiceSessionId; 
  result = SeCopyClientToken(Token, ImpersonationLevel, (CHAR)ServerSilo, 0, 0i64, DuplicateToken);
  v7 = result;
  if( (int)result >= 0 )
  {
    ServerSiloServiceSessionId = PsGetServerSiloServiceSessionId(ServerSilo);
    if( ServerSiloServiceSessionId != -1 )
      v7 = SeSetSessionIdToken(*DuplicateToken, ServerSiloServiceSessionId);
    if( v7 < 0 || (v7 = SepSetServerSiloToken(*DuplicateToken, ServerSilo), v7 < 0) )
    {
      HalPutDmaAdapter((PADAPTER_OBJECT)*DuplicateToken);
      *DuplicateToken = 0i64;
    }
    return(unsigned int)v7;
  }
  return result;
}

Referenced by:

SepCreateClientSecurityEx
SepUpdateSiloInClientSecurity