SepCopyClientTokenAndSetSilo

NTSTATUS __stdcall SepCopyClientTokenAndSetSilo(
        VOID *Token,
        _SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
        _EJOB *ServerSilo,
        VOID **DuplicateToken){
  NTSTATUS result; 
  int v7; 
  unsigned int ServerSiloServiceSessionId; 

  result = SeCopyClientToken(Token, ImpersonationLevel, (UINT8)ServerSilo, 0i64, 0i64);
  v7 = result;
  if( result >= 0 )
  {
    ServerSiloServiceSessionId = PsGetServerSiloServiceSessionId((INT64)ServerSilo);
    if( ServerSiloServiceSessionId != -1 )
      v7 = SeSetSessionIdToken(*DuplicateToken, ServerSiloServiceSessionId);
    if( v7 < 0 || (v7 = SepSetServerSiloToken(*DuplicateToken, ServerSilo), v7 < 0) )
    {
      HalPutDmaAdapter((PADAPTER_OBJECT)*DuplicateToken);
      *DuplicateToken = 0i64;
    }
    return v7;
  }
  return result;
}

Referenced by:

SepCreateClientSecurityEx
SepUpdateSiloInClientSecurity