BRPI0406421B1 - método para sistemas gráficos remotos - Google Patents

método para sistemas gráficos remotos Download PDF

Info

Publication number
BRPI0406421B1
BRPI0406421B1 BRPI0406421A BRPI0406421A BRPI0406421B1 BR PI0406421 B1 BRPI0406421 B1 BR PI0406421B1 BR PI0406421 A BRPI0406421 A BR PI0406421A BR PI0406421 A BRPI0406421 A BR PI0406421A BR PI0406421 B1 BRPI0406421 B1 BR PI0406421B1
Authority
BR
Brazil
Prior art keywords
data
region
client
remote
synchronized
Prior art date
Application number
BRPI0406421A
Other languages
English (en)
Inventor
Leichtling Iva
Original Assignee
Microsoft Corp
Microsoft Technology Licensing Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp, Microsoft Technology Licensing Llc filed Critical Microsoft Corp
Publication of BRPI0406421A publication Critical patent/BRPI0406421A/pt
Publication of BRPI0406421B1 publication Critical patent/BRPI0406421B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2358/00Arrangements for display data security
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Digital Computer Display Output (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Selective Calling Equipment (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

"dados gráficos e regionais sincronizados para sistemas gráficos remotos". dados regionais e dados gráficos para um sistema remoto são obtidos de modo síncrono e enviados a um vídeo remoto, enquanto que mantendo o sincronismo entre os dados regionais e os dados gráficos. em uma implementação, dados regionais sincronizados e dados gráficos sincronizados são coletados dentro de um controlador de vídeo. para a exibição remota, os dados regionais de entrada precedem os dados gráficos sincronizados correspondentes, de forma que os dados gráficos sejam exibidos, de acordo com os dados regionais sincronizados.

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO PARA SISTEMAS GRÁFICOS REMOTOS", ÁREA TÉCNICA
[001] A presente matéria refere-se, de uma maneira geral, a compartilhamento de aplicativos de dispositivos de computação e, de uma maneira particular, a dados gráficos e de região sincronizados para sistemas gráficos remotos.
ANTECEDENTES DA INVENÇÃO
[002] Sistemas gráficos remotos permitem que clientes de dispositivos de computação em rede se conectem a um servidor e recebam uma representação visual de, pelo menos, parte dos gráficos sendo exibidos no servidor, ou por esse gerado. Muitas vezes, o cliente de rede pode exibir toda a geração gráfica associada à sessão. Da mesma forma, pode ser permitido que o cliente interaja com a sessão, injetando a entrada de usuário, gerada por dispositivos, como um mouse ou teclado conectado ao cliente, na sessão do servidor. Um servidor deste tipo, que permite a um cliente se conectar em uma “sessão de identificação”, é algumas vezes chamado de um “servidor remoto”. Subsistemas de dispositivos de computação, que executam sessões de identificação remotas e gráficos remotos são algumas vezes denominados “subsistemas de serviços de terminal”.
[003] Um sistema gráfico remoto pode controlar a quantidade de gráficos enviada a um cliente, de forma que o cliente não veja tudo sendo exibido (isto é, gerado) por um servidor remoto. Três categorias dividem, de forma apropriada, o nível de compartilhamento gráfico entre servidor e cliente, Na “área de trabalho remota”, um cliente visualiza substancialmente tudo que seria visto na tela de um monitor conectado diretamente ao servidor. Na "janela remota”, um cliente visualiza somente uma janela ou painel (ou um conjunto de janelas ou painéis) a partir da área de trabalho do servidor, cada janela normalmente projetada pelo sistema operacional do servidor para a saída gráfica e/ou interface de usuário (UI) correspondente a um aplicativo. Assim, no servidor, um aplicativo processador de texto pode possuir uma janela e um aplicativo de e-mail pode possuir outra janela, mas talvez somente a janela do processador de texto será compartilhada com o cliente. Na “região remota”, somente um subconjunto da área de trabalho do servidor é compartilhado com um cliente, mas a região compartilhada não corresponde necessariamente a uma janela. Na verdade, a região compartilhada pode ser arbitrária.
[004] A fim de realizar esta “tarefa remotamente” de gráficos remotos entre um servidor remoto e um cliente conectado, uma certa quantidade de telemetria se faz necessária. A partir da perspectiva do cliente, uma instrumentação no lado do servidor registra os “dados gráficos”, isto é, informações que compõem o conteúdo visual da área de trabalho ou uma região da área de trabalho, e envia esses dados gráficos de volta ao cliente. Os dados gráficos podem descrever características de texto, conteúdo de imagem, e/ou UI, tais como barras de rolagem e botões de clique sendo gerados pelo servidor. Os dados gráficos em separado podem conter informações suficientes para a área de trabalho remota acima descrita, mas insuficientes para os tipos de região e janela remotos. Nestes últimos tipos remotos, uma segunda instrumentação no lado do servidor precisa medir a geometria (isto é, o formato) de uma região a ser compartilhada, e transmitir estas informações de geometria de volta ao cliente. A segunda instrumentação ou ainda uma terceira instrumentação adicional no lado do cliente precisa também medir a localização relativa da região a ser compartilhada, com respeito à área de trabalho do servidor (aqui a seguir denominada “posição”) e transmitir este terceiro tipo de informações de volta ao cliente. Assim, para exibir com precisão uma região a partir da área de trabalho do servidor na sua própria tela, o cliente deve ser informado dos dados, formato, e posição gráfica atual (os dois últimos sendo “dados de re- gião”) da região. A visualização do cliente sobre os dados de região — as informações de formato e posição — permite que o cliente divida a área de trabalho do servidor em regiões visíveis e não-visíveis, isto é, região(ões), na(s) qual(is) exibir dados gráficos associados, e região(ões), na(s) qual(is) não exibir dados gráficos associados. O cliente, então, completa a(s) região(ões) a exibir com os dados gráficos ou, pelo menos, marca os dados gráficos com os limites da(s) região(ões) a não ser(em) exibida(s).
[005] De maneira convencional, os dados gráficos acima mencionados de uma região a ser compartilhada são detectados, rastreados, e/ou reunidos continuamente por uma primeira instrumentação e transmitidos ao cliente, de modo independente das informações de formato e de posição. Essa primeira instrumentação normalmente consiste, ou depende substancialmente, de partes bem evoluídas de um subsistema de processamento gráfico de núcleo do sistema operacional, visto que grande parte do rastreamento gráfico é o mesmo a ser usado, se o servidor não for um servidor remoto.
[006] Os dados de região são reunidos, de modo convencional, de uma maneira assíncrona por uma segunda instrumentação que está em um programador inteiramente diferente dos componentes de núcleo que coletam continuamente os dados gráficos. Por exemplo, dados de região podem ser reunidos no modo de usuário, por mecanismos de chamada seletiva. Além disto, os dados de região são enviados ao cliente de modo dessincronizado dos dados gráficos ou, em outras palavras, se os dados de região e os dados gráficos forem combinados em um único fluxo de dados por um protocolo remoto, a combinação e adesão às regras de protocolo remoto não resolve a condição de falta de sincronismo dos dados de região, com relação aos dados gráficos. (A coleta sem sincronismo dos dados de região significa, em um certo sentido, que a coleta dos dados de região opera de modo independente da coleta de dados gráficos, isto é, sem referência à correspondência de um segmento dos dados gráficos com um segmento dos dados de região).
[007] Os dados de região e os dados gráficos recebidos são combinados entre si pelo cliente para criar a exibição final. De maneira histórica, o uso de duas instrumentações funcionando mais ou menos de modo independente entre si para coletar sem sincronismo os dados de região e os dados gráficos evoluiu, talvez devido ao fato dos mecanismos em núcleos de sistemas operacionais para a coleta de dados gráficos já estivessem bem evoluídos, quando sistemas remotos começaram a ser praticados, e a coleta dos dados de região fosse adicionada como uma idéia tardia. Visto que eles são idéias tardias, os processos para a coleta sem sincronismo dos dados de região evitam tipicamente a perturbação do núcleo do sistema operacional, que é o território da coleta dos dados gráficos.
[008] Após os dados de região e os dados gráficos ser reunidos sem sincronismo para região remota, eles são tipicamente empacotados, de acordo com um protocolo, tal como MICROSOFT® REMOTE DESKTOP PROTOCOL (RDP) ou CITRIX INDEPENDENT COMPUTING ARCHITECTURE (ICA) PROTOCOL, e enviados ao cliente. (Microsoft Corporation, Redmond, Washington; Citrix Corporation, Fort Lauderdale, Florida). O protocolo RDP, por exemplo, é apenas um de muitos protocolos gráficos remotos, isto é, muitos protocolos gráficos remotos são extensíveis o bastante para adicionar região remota para compartilhamento de uma janela ou de uma região de uma área de trabalho. Se RDP for usado como um componente da transmissão de dados da telemetria de exibição remota, então deve ser observado que RDP é baseado em, e é uma extensão de, normas da família de protocolos T.120. RDP é um protocolo com capacidade para multicanais, o que permite que canais virtuais distintos transportem dados de apresentação e comunicação de dispositivos a partir do servidor, bem como dados criptografados de mouse e teclado do cliente.
[009] De maneira convencional, os dados de região e os dados gráficos são dessincronizados no seu início por coleta assíncrona e podem se tornar mesmo mais dessincronizados, dependendo de como os dados forem manipulados, quando eles passam através das camadas de rede para serem transmitidos e recebidos por um cliente. O protocolo RDP não resolve a dessincronização. Por analogia, semelhante a um observador de pássaros, cujo rastreamento de um ágil faisão com um par de excelentes binóculos não fica sincronizado (a despeito da excelência dos binóculos), um cliente remoto que recebe dados gráficos e de região de dessincronizados (a despeito da excelência do protocolo remoto), não apenas deixa de observar um destino desejado na área de trabalho do servidor, mas, ao invés disso, pode na verdade visualizar coisas na área de trabalho do servidor que ele não tenha previsto ver.
[0010] A Fig. 1 apresenta partes de um sistema gráfico remoto 100, incluindo uma tela de servidor 102 e uma tela de cliente 104. Uma janela 106, a ser compartilhada com o cliente, é exibida na tela de servidor 102, em conjunto com “regiões visuais proibidas” de informações secretas e privadas 108 na área de trabalho do servidor. Se, a qualquer momento, os dados gráficos descrevendo o conteúdo da janela 106 e os dados de região descrevendo o formato e localização da janela 106 não forem sincronizados, a tela de cliente 104 irá mostrar, de forma incorreta, a janela pretendida 106'. Por exemplo, se a janela 106' se mover, ou for movida, da esquerda para à direita através área de trabalho da tela de servidor 102 e os dados de região e os dados gráficos não estiverem sincronizados, quando reunidos e/ou transmitidos ao cliente, então a tela de cliente 104 pode continuar a exibir aquela região da área de trabalho do servidor, onde a janela foi originalmente posicionada 110, mas que está agora exibindo informações secretas.
[0011] Esta falta de sincronismo cauda dois problemas: a não exibição do conteúdo que deve ser apresentado, e a exibição de conteúdo que não deve ser apresentado. Em primeiro lugar, a tela de cliente 104 não mostra o subconjunto da tela de servidor 102 que o sistema gráfico remoto 100 pretende mostrar ao cliente. Isto é, se a janela 106 destinada a ser exibida contiver dados necessários para a tomada de decisões comerciais, então as decisões ficam suspensas, até que os dados coretos sejam exibidos, Em segundo lugar, a tela de cliente 104 pode mostrar, embora por um momento, informações secretas não pretendidas 112, isto é, um subconjunto da tela de servidor 102 que o sistema gráfico remoto 100 não pretende compartilhar com o cliente. Assim, a falta de sincronísmo constitui um risco de segurança, se informações "altamente secretas" forem reveladas a um cliente sem a correta autorização. Infelizmente, problemas de sincro-nismo entre dados de região e dados gráficos existem na maioria dos sistemas gráficos remotos conhecidos, em que clientes muitas vezes visualizam partes não pretendidas de uma área de trabalho do servidor. SUMÁRIO DA INVENÇÃO
[0012] Dados de região e os dados gráficos para um sistema remoto são reunidos de maneira síncrona e enviados a uma tela remota, enquanto que mantendo o sincronísmo entre os dados de região e os dados gráficos. Em uma implementação, dados de região sincronizados e dados gráficos sincronizados são reunidos dentro de um acionador de vídeo. Para a exibição remota, dados de região de entrada precedem dados gráficos sincronizados correspondentes, de forma que os dados gráficos sejam exibidos, de acordo com os dados de região sincronizados.
BREVE DESCRIÇÃO DOS DESENHOS
[0013] Â Fíg, 1 é uma representação gráfica de um problema convencional, ocorrendo com sistemas gráficos remotos convencionais, [0014] A Fíg. 2 é um diagrama de blocos de um sistema gráfico remoto exemplífícante, no qual dados de região e dados gráficos são sincronizados.
[0015] A Fíg. 3 é um diagrama de blocos de um mecanismo de sincronização remota (RSE).
[0016] A Fig. 4 é uma representação gráfica de uma técnica alternativa exemplificante para estabelecer uma região compartilhada para sistema remoto sincronizado exemplificante, [0017] A Fig, 5 é uma representação gráfica de uma estrutura de fluxo de dados exemplificante, [0018] Â Fig. 6 é um diagrama de blocos de um sistema remoto de compartilhamento de aplicativos exemplificante, no qual o cliente detém a sessão de identificação, e a segurança é mantida durante uma condição de largura de banda baixa.
[0019] A Fig. 7 é um diagrama de blocos de um sistema remoto colabora ti vo exemplificante, no qual a segurança é mantida durante uma condição de largura de banda baixa, [0020] A Fig. 8 é um diagrama de blocos de um sistema remoto multimídia exemplificante, no qual a segurança é mantida durante uma condição de largura de banda baixa, [0021] A Fíg. 9 é um fluxograma de um processo exemplificante de dados de região e os dados gráficos sincronizados em um sistema gráfico remoto, [0022] A Fig. 10 é um fluxograma de um processo exemplificante de manutenção da segurança durante uma condição de largura de banda baixa em um sistema gráfico remoto exemplificante, no qual os dados de região e os dados gráficos são sincronizados.
[0023] A Fig. 11 é um diagrama de blocos de um dispositivo de computação exemplificante, adequado para a prática de alguns aspectos do assunto focalizado. DESCRICÃO DETALHADA DA MODALIDADE PREFERIDA Aspectos Gerais [0024] O assunto focalizado descreve sistemas gráficos remotos precisos, disponibilizados por reunião síncrona dos dados de região e dos dados gráficos, e canalização síncrona de ambos os tipos de dados através de um servidor gráfico remoto. Um mecanismo de sincronização remota (RSE) exemplificante inclui um acionador de vídeo, que pode capturar, por sincronismo, dados de região e dados gráficos para uma janela ou região de uma área de trabalho do servidor, para serem remotamente compartilhados com um cliente. (“Janela” e “região” serão aqui usados até certo ponto de modo intercambiável, a despeito das diferenças entre “janela remota” e “região remota”). O RSE evita a interjeição de retardos, que iria dessincronizar os dados de região e os dados gráficos e, a seguir, pode enviar os dados sincronizados, de acordo com um protocolo remoto, no qual os dados de região precedem os dados gráficos associados. Do ponto de vista do servidor, dados gráficos não são enviados a um cliente, a não ser que dados de região corretamente atualizados, associados aos dados gráficos, tenham sido inicialmente enviados. Do ponto de vista do cliente, dados gráficos recebidos pelo cliente podem ser confiados, para corresponder aos dados de região mais recentemente recebidos.
Sistema Exemplificante [0025] A Fig. 2 mostra um sistema remoto exemplificante 200, no qual um servidor remoto (“servidor”) 202 é acoplado, de forma comunicativa, com um cliente 204 através de uma rede 206. Uma tela de servidor 208 apresenta uma janela 210 a ser compartilhada com o cliente 204 e apresentada numa tela de cliente 212. Um mecanismo de sincronização remota (“RSE”) 214 incluído no, ou associado ao, servidor 202 coleta, de modo síncrono, dados de região e dados gráficos, que descrevem a janela 210, e envia dados de região e gráficos sincronizados ao cliente 204. Em certas implementações, o cliente 204 inclui um receptor de dados sincronizados 215 para receber dados de região sincronizados e dados gráficos sincronizados, associados, e para exibir os dados gráficos como gráficos numa região 210' de uma tela de cliente 212, descrita pelos dados de região. Em outras implementações, um receptor de dados sincronizados 215 distinto pode não ser necessário, se um RSE exemplificante 214 emitir dados sincronizados, pelo qual um cliente 204 pode exibir corretamente os dados gráficos recortados pelos dados de região sincronizados, usando-se mecanismos convencionais. Um dispositivo de computação exemplificante, adequado para uso como um servidor 202 ou um cliente 204, é abaixo descrito com respeito à Fig. 11.
[0026] A janela 210 a ser compartilhada possui um conteúdo gráfico 216, incluindo o texto “Hello”! (“Olá”!) e uma imagem do sol. O conteúdo gráfico 216 da janela 210 pode ser descrito por um conjunto de dados gráficos a ser reunido de modo síncrono pelo RSE 214. A janela 210 ainda possui uma geometria de formato 218 e uma posição de localização 220 na área de trabalho e/ou tela de servidor 208. A posição de localização 220 é algumas vezes representada por um par ordenado de coordenadas de “eixo geométrico x” e “eixo geométrico y”, que descrevem um deslocamento em duas dimensões, a partir de um ponto de origem nas coordenadas (0,0), normalmente selecionadas como o pixel limite superior esquerdo da tela de servidor 208. Nesta implementação, a geometria de formato 218 e a posição de localização 220 da janela são coletivamente descritas por um conjunto de dados de região a serem reunidos, de modo síncrono, pelo RSE 214.
[0027] Devido ao fato dos dados de região e os dados gráficos serem sincronizados pelo RSE exemplificante 214, quando apresentados na tela de cliente 212, a janela 210' reproduz precisamente o conteúdo gráfico 216, a geometria de formato 218, e a posição de localização 220 da janela 210, conforme exibida na tela de servidor 208 e/ou conforme emitida pelo servidor 202 ao cliente 204. O tamanho absoluto da janela 210', conforme mostrada na tela de cliente 212, pode variar de tamanho, conforme mostrado na tela de servidor 208, dependendo do tamanho relativo da tela de cliente 212 em comparação com o tamanho da tela de servidor 208.
[0028] Se um RSE exemplificante 214 usar um protocolo remoto conhecido, tal como RDP, para enviar os dados de região e os dados gráficos, então um cliente 204 pode ser capaz de exibir corretamente gráficos sincronizados a uma região 210' sem um receptor de dados sincronizados 215. Algumas implementações de um RSE exemplificante 214, porém, podem não usar um protocolo remoto conhecido. Por exemplo, o assunto focalizado pode ser praticado em ambiente de computação e/ou multimídia que não usam protocolos conhecidos. O assunto focalizado não é limitado pelo veículo de transporte de dados, empregado para enviar dados de região e gráficos sincronizados entre o servidor 202 e o cliente 204. Assim, em algumas implementações, um receptor de dados sincronizados 215, normalmente incluído no cliente 204, inclui um subsistema de região 222 e um subsistema gráfico 224. O subsistema de região 222 recebe dados de região de entrada sincronizados com dados gráficos e designado a uma região 210' de uma tela de cliente 212, com base nos dados de região. “Buffers” de dados podem ser empregados no cliente 204, ou no receptor de dados sincronizados 215, para receber e armazenar um fluxo de dados sincronizados de entrada. Assim, os dados de região e os dados gráficos podem ser armazenados, enquanto que mais fluxos de dados são recebidos. O subsistema gráfico 224 recebe os dados gráficos sincronizados com os dados de região e os dados gráficos na região 210', com base nos dados gráficos.
Mecanismo Exemplificante [0029] A Fig. 3 apresenta o RSE exemplificante 214 da Fig. 2 em maiores detalhes. O RSE exemplificante 214 coleta dados gráficos e dados de região associados no mesmo local, ao mesmo tempo. Por conseguinte, um módulo de reunião de dados gráficos 300, um módulo de reunião de dados de região 302, um programador de reunião de dados 304, um relógio 306, um acionador de vídeo 308, e uma interface de rede 310 são acoplados, de modo comunicativo, conforme ilustrado. O acionador de vídeo 308 pode ainda incluir um protocolo remoto 312, um seqüenciador de saída de dados 314, um compensador de largura de banda 316, e uma lógica de segurança 318. O RSE exemplificante ilustrado 214 é somente um exemplo de um RSE 214, que pode sincronizar dados de região e os dados gráficos para regiões remotas. Outros mecanismos exemplificantes, capazes de realizar a questão focalizada, podem ter diferentes configurações.
[0030] O módulo de reunião de dados gráficos 300 coleta, de modo síncrono, dados gráficos, os quais, conforme acima descrito, consistem do conteúdo de imagem virtual — texto, imagens, ícones, bordas, controles de UI, menus, barras de rolagem etc — da região a ser compartilhada. Visto que o conteúdo de uma região se altera tipicamente ao longo do tempo, os dados gráficos podem ser reunidos em intervalos distintos, continuamente digitalizados, e/ou em fluxo. Em uma implementação, o programador de reunião de dados 304 define um intervalo de tempo, tal como 150 milissegundos, para o módulo de reunião de dados gráficos 300 realizar ciclos para reunião de dados gráficos, que correspondem a um ciclo com o mesmo tempo para reunião de dados de região. Um ciclo temporizado destes é uma arranjo para sincronizar dados de região e dados gráficos, já que muitos sistemas operacionais coletam dados gráficos continuamente em um fluxo. Em algumas modalidades, somente alterações nos dados gráficos, a partir de um ciclo precedente, precisam ser coletadas e não uma coleta de um conjunto completo de dados gráficos a partir do zero.
[0031] Em uma implementação, o módulo de reunião de dados gráficos 300 é uma parte inerente ou distinta do acionador de vídeo 308. Isto é, um acionador de vídeo 308, tal como um WINDOWS® GRAPHICS DISPLAY ACIONADOR, coleta dados gráficos, através da reunião de comandos de desenhos primitivos emitidos para o subsistema WINDOWS® GRAPHICS DEVICE IINTERFACE (GDI). Esses desenhos primitivos são codificados, usando-se um protocolo remoto 312, tal como RDP e enviados através de uma rede 206 a um ou mais clientes de RDP 204. Em uma implementação destas, o módulo de reunião de dados gráficos 300 pode incluir ou compreenderWIN32K.DLL e outros componentes associados ao subsistema WINDOWS® GDI. Em algumas implementações, o relógio 306 e/ou o programador de reunião de dados pode ser um relógio de sistema, ou a função de relógio pode ser inerente ao sistema operacional para coleta ou fluxo de dados gráficos.
[0032] Os dados de região a serem enviados a um cliente 204, usando o protocolo remoto 312, são também reunidos no acionador de vídeo 308 através do módulo de reunião de dados de região 202. Visto que a posição de localização e a geometria de formato de uma janela, ou de uma região, se alteram tipicamente ao longo do tempo, esses dados de região podem ser reunidos em intervalos distintos, ou de maneira ideal, continuamente digitalizados e/ou em fluxo, para atualizar o cliente 204. Em uma implementação, o programador de reunião de dados 304 define um intervalo de tempo, tal como 150 milissegundos, para o módulo de reunião de dados de região 302 realizar ciclos de reunião de dados de região que correspondam a um ciclo de mesmo tempo para coletar dados gráficos correspondentes. Em algumas implementações, precisam ser consideradas somente alterações para um conjunto precedente de dados de região reunidos no ciclo precedente.
[0033] Em uma implementação, o módulo de reunião de dados de região 302 coleta (e/ou rastreia), de modo síncrono, dados de região relevantes, através da inclusão e/ou compreendendo um objeto de janela, “WNDOBJ”, criado através de um WINDOWS® SERVER ACIONADOR DEVELOPMENT KIT (DDK). Um WNDOBJ é um objeto de janela em nível de acionador, que pode ser criado para conter informações sobre a geometria de formato e posição de localização, isto é, os dados de região, de uma região visual. Através da criação de um WNDOBJ, que corresponde a uma região de aplicativo a ser compartilhada, o acionador de vídeo 308 pode rastrear os dados de região que representem mudanças na geometria de formato e posição de localização daquela região visual.
[0034] Uma estrutura WNDOBJ exemplificante, permitindo que um acionador de vídeo 308 mantenha o rastreamento das mudanças dos da- dos de região de uma região sendo compartilhada, é abaixo mostrada na TABELA 1: TABELA 1 [0035] Os membros da estrutura WNDOBJ exemplificante na TABELA 1 incluem: • coCliente, que especifica uma estrutura CLIPOBJ que descreve a região de cliente da janela. Se íDComplexity for DC_RECT e a borda esquerda em rcIBounds for maior ou igual à borda direita, ou a borda superior for maior ou igual à borda inferior, a região de cliente é invisível. • pvConsumer, que aponta para um valor definido pelo acio-nador que identifica esta estrutura WNDOBJ específica. Este valor pode ser definido, pela evocação da função WNDOBJ_vSetConsumer. • rcIClient, que especifica uma estrutura RECTL que descreve a área de cliente da janela em coordenadas de tela. Este retângulo é exclusivo do canto inferior direito, o que significa que as bordas inferiores e direitas desta região não são incluídas. • psoOwner, que aponta para a estrutura SURFOBJ que foi passada para EngCreateWnd, quando esse WNDOBJ foi criado.
[0036] Os dados de região para a região compartilhada com o cliente 204 podem ser enumerados por evocação das funções WNDOBJcEnumStart e WNDOBJbEnum. Um acionador de vídeo 308 pode associar os seus próprios dados com um WNDOBJ por evocação da função WNDOBJvSetConsumer.
[0037] Como um elemento sincronizador em um RSE exemplificante 214, um acionador de vídeo 308 pode acessar participantes públicos do WNDOBJ. É garantido que esses participantes públicos permaneçam inalterados somente no contexto da rotina de retorno de chamada do acionador fornecida ao subsistema GDI na função EngCreateWnd, ou nas funções onde um WNDOBJ é fornecido.
[0038] O acionador de vídeo 308 deve usar o SURFOBJ, para o qual o psoOwner aponta, para recuperar um estado de acionador específico relevante ao WNDOBJ, tal como o identificador PDEV do acionador de vídeo, ao invés de manter as variáveis globais.
[0039] Para estabelecer uma região a ser compartilhada com o cliente 204, um aplicativo pode usar a interface do programa de aplicativo (API) WIN32 para acessar a funcionalidade WNDOBJSETUP implementada por um acionador de vídeo 308. Acesso é adquirido pela função WIN32 ExtEscape. O subsistema GDI anteriormente citado passa esta chamada “escape” para o acionador de vídeo 308 com DrvEscape, implementado pelo acionador de vídeo 308 com WNDOBJ SETUP para o valor de iEsc.
[0040] Um aplicativo a ser compartilhado entre o servidor 202 e o cliente 204 evoca ExtEscape(hdc, WNDOBJ SETUP,...) e passa um identificador para a janela criada por aplicativo (criada pela função CreateWindow ou alguma função WIN32 equivalente) através de um buffer de entrada para o acionador de vídeo 308. Se o acionador de vídeo 308 tiver que receber dados de região reunidos, associados à região, ele evoca EngCreateWnd, dentro do contexto da chamada ExtEscape, para criar uma estrutura WNDOBJ para a determinada janela. Deste ponto em diante, as mudanças na geometria de formato e na posição de localização com relação à janela criada por aplicativo, assim configurada, irão passar para bai- xo,para o acionador de vídeo 308, [0041] Um acionador de vídeo 308 apropriado para a implementação acima descrita processa a chamada ExtEscape de maneira similar àquela mostrada na TABELA 2: TABELA 2 [0042] A criação de um objeto de janela envolve o bloqueio dos recursos especiais de janela, de forma que EngCreateWnd seja evocado somente no contexto do WNDOBJSETUP escape em DrvEscape ou DrvSetPixelFormat.
[0043] A função EngCreateWnd suporta ainda a coleta de dados de região por parte de cada um dos diferentes acionadores de vídeo 308. Através de EngCreateWnd, cada acionador de vídeo 308 identifica sua própria rotina de retorno de chamada que o subsistema GDI deve evocar para alterações na região correspondente. Este recurso permite, por exemplo, que um acionador de vídeo 308 para vídeo ao vivo colete dados de região correspondentes às mudanças nas janelas de vídeo ao ví vo, enquanto que um acionador de vídeo OpenGL 308 esteja coletando dados de região correspondentes às mudanças nas janelas OpenGL.
[0044] O subsistema GDI irá retornar a chamada para o acionador de vídeo 308 com os dados de região mais recentes, se um novo WNDOBJ for criado em DrvSetPixelFormat. O subsistema GDI Irá também retornar a chamada ao acionador de vídeo 308, quando uma região referida por WNDOBJ for destruída.
[0045] A coleta de dados de região representativos das mudanças no formato e/ou localização de uma região pode envolver o uso de três funções de retorno de chamada proporcionadas para suportar a estrutura WNDOBJ. A região visível no cliente 204 pode ser enumerada por evocação das funções de retorno de chamada WNDOBJcEnumStart e WNDOBJbEnum. Um acionador de vídeo 308 pode associar seus próprios dados a um WNDOBJ por evocação da função de retorno de chamada WNDOBJvSetConsumer.
[0046] Assim, na implementação há pouco descrita, um WNDOBJ informa, de maneira síncrona, ao acionador de vídeo 308 das mudanças na região visível em um cliente 204. Visto que, nesta implementação, o acionador de vídeo 308 é também o local onde primitivas gráficas são coletadas, de forma síncrona, através das APIs da GDI, os dados de região e os dados gráficos sincronizados podem ser correlacionados entre si (ou mantidos correlacionados entre si) e enviados, de uma forma sincronizada segura, ao cliente 204, p. ex., primeiro os dados de região atualizados presentes no fim de um determinado intervalo de tempo e, a seguir, os dados gráficos correspondentes aos dados de região. A coleta dos dados de região e dos dados gráficos em um ponto de junção no RSE exemplificante 214 ou, de modo específico, em um ponto de junção, em um acionador de vídeo exemplificante 308, é um aspecto que permite a sincronização descrita pelo assunto focalizado. A partir do ponto de junção, os dados de região e os dados gráficos são mantidos sincronizados até inclusive a emissão ao cliente 204.
[0047] Uma região de uma área de trabalho do servidor a ser compartilhada com um cliente 204 não precisa ser uma janela de aplicativo. Existem muitas maneiras de descrever uma região de uma tela de exibição que possua dados de região, com os quais dados gráficos podem ser sincronizados. Conforme mostrado na Fig. 4, que ilustra um processo exemplificante 400 de criação manual de uma região da porta de visualização 402, um usuário no lado do servidor ou no lado do cliente pode traçar manualmente um retângulo ou outro formato na tela de exibição relevante (p. ex., 208, 212) para criar, por exemplo, uma região da porta de visualização manualmente “arrastada por mouse” 402. A região da porta de visualização 402 encerra visualmente tudo a ser compartilhado com o cliente 204. Em outras palavras, o acionador de vídeo 308 pode armazenar a região da porta de visualização 402, como uma região de tela de exibição tendo geometria de formato e posição de localização, isto é, dados de região, e enviar esses dados de região antes do envio de dados gráficos para a região da porta de visualização 402. Em decorrência disto, gráficos exibidos serão precisamente recortados pela região da porta de visualização descrita 402. Isto constitui um mecanismo alternativo para produzir dados de região sincronizados, em comparação com mecanismos de coleta de dados acima apresentados com relação a um módulo de reunião de dados de região 302 de um RSE exemplificante 214.
[0048] Retornando à Fig. 3, o seqüenciador de saída de dados 314 pode dirigir e supervisionar o uso de um protocolo remoto 312 para garantir que os dados de região (p. ex., associados a um determinado intervalo, ciclo, ou parcela de tempo) permaneçam associados a seus dados gráficos correspondentes. Uma maneira para manter a associação entre dados de região sincronizados e os dados gráficos sincronizados correspondentes é enviar os dois tipos de dados em uma certa seqüência representando a associação — a ser processada no lado do cliente por um cliente que entende a associação e a ordem seqüencial que representa a associação. Assim, em uma implementação, dados de região sempre precedem seus dados gráficos correspondentes. Isto pode significar que os dados de região síncronos sejam sempre transmitidos ao cliente 204 antes dos dados gráficos síncronos correspondentes, mas, ainda mais importante, isto significa que, se dados de região relevantes forem enviados ao cliente 204, o cliente 204 atualiza primeiro os dados de região, antes de processar os dados gráficos correspondentes aos dados de região. Assim, um enlace seguro — uma “sincronia” — é formado entre os dados de região e os dados gráficos. O cliente 204 pode depender da posse de dados de região correntes para quaisquer dados gráficos recebidos. Em outras palavras, um cliente 204 sabe que quaisquer dados gráficos recebidos correspondem a dados de região previamente recebidos. Dados gráficos aplicados à tela de cliente 212 são mostrados (ou “recortados”) como os dados de região mais recentes, resultando na exibição corretamente sincronizada de uma região compartilhada. O RSE exemplificante 214, assim, se destina a garantir que dados gráficos, dentro da região visível pretendida a ser compartilhada com um cliente 204, não deixem de ser exibidos, e que dados gráficos, dentro da região não visível ao cliente 204, não sejam exibidos de modo inadvertido.
[0049] Como mostrado na Fig. 5, um seqüenciador de saída de dados 314 cria uma estrutura de dados exemplificante 500, normalmente através de um protocolo remoto 312, tal como RDP. O seqüenciador de saída de dados 314 controla o uso do protocolo remoto 312, para enviar inicialmente os dados de região 502 a um cliente 204. Somente após os dados de região 502 terem sido enviados é que o seqüenciador de saída de dados 314 envia dados gráficos 504 sincronizados com, e assim pertencentes a, os dados de região precedentes 502. Um cliente 204 pode armazenar os dados de região 502, enquanto que recebendo dados gráficos 504 correspondentes. Assim, o seqüenciador de saída de dados 314 usa o protocolo remoto 312 para empacotar os dados de região 502 e os dados gráficos 504 em uma seqüência de pacotes de dados 506 (ou unidade de dados de protocolo (PDU)). Pacotes individuais na seqüência 506 podem chegar de forma aleatória e fora de ordem no cliente 204, mas os pacotes incorporam tipicamente um número seqüencial em seus respectivos cabeçalhos, para remontagem da seqüência correta dos pacotes de dados 506. Assim, mesmo se os dados de região 502 não forem realmente recebidos inicialmente pelo cliente 204, a seqüência 506 é reconstruível, conforme o cliente 204 armazena em buffer os pacotes de entrada, de modo que, a partir da visualização do cliente, os dados de região 502 precedem e modificam a exibição de seus dados gráficos 504 sincronizados correspondentes.
[0050] No que diz respeito às versões do RDP, o assunto focalizado cria uma PDU secundária de RDP alternativa, a qual empacota os dados de região 502 para atualização, espaço de tempo, e/ou iteração de determinados dados de região, antes do empacotamento dos dados gráficos 504. Se um primeiro pacote 508 carecer de capacidade para os dados de região presentes 502, então os dados de região restantes 502 são enviados em um pacote seguinte 510. Da mesma forma, os dados gráficos 504 seguem os dados de região 502, e enchem os pacotes (p. ex. 512), conforme necessário, para enviar dados gráficos 504 sincronizados contínuos, associados ao conjunto atual de dados de região 502.
[0051] Se os dados de região 502 não se alterarem, isto é, não se alterarem ao longo de espaços de tempo múltiplos subseqüentes, então dados de região subseqüentes 502 não precisam ser enviados a um cliente 204, até que os dados de região 502 se modifiquem novamente, e dados gráficos subseqüentes 504 enviados ao cliente 204 simplesmente se referem aos dados de região 502 enviados e recebidos em um tempo mais recente.
[0052] Conforme mencionado, os dados de região 502 incluem tipicamente uma descrição da geometria de formato de uma região compartilhada, bem como a posição de localização da área de trabalho da região compartilhada. A descrição da geometria de formato consiste de uma coleção codificada de retângulos que se aproxima do formato da região compartilhada. (O pixel exibe tipicamente imagens de retrato, como coleções de retângulos). O seqüenciador de saída de dados 314 pode estabelecer um número máximo de retângulos, a ser usado para descrever o formato de uma região compartilhada. Acima do número máximo, o seqüenciador de saída de dados 314 pode evocar o compensador de largura de banda 316 e a lógica de segurança 318 para reduzir a quantidade dos dados de região 502, sem comprometer a segurança, especialmente se a largura de banda da transmissão ao cliente for limitada. Por exemplo, uma janela de aplicativo processador de texto compartilhado pode ser descrita por um único retângulo simples. Quando uma janela de menu de um aplicativo não-compartilhado é aberta no meio (e no topo da) da janela do aplicativo processador de texto compartilhado, o formato da janela do processador de texto a ser descrito pelos dados de região 502 se torna um formato complexo de rosca. Retângulos múltiplos são agora necessários, ao invés do único retângulo simples, para descrever a janela do processador de texto, necessitando de mais dados de região 502. Janelas ou regiões compartilhadas podem ser muito complexas e podem demandar uma grande quantidade de dados de região. Por exemplo, uma janela constituída de uma película de filme popular que inclua teias e plumas, necessita de cerca de 10.000 retângulos para ser descrita. Soluções seguras para sistemas remotos contínuos durante momentos de limitação da largura de banda, devido a complexos formatos de janela compartilhada, são discutidos abaixo a seguir, com relação às figs. 6-8.
[0053] O componente da posição de localização dos dados de região na área de trabalho requer tipicamente menos largura de banda, do que a geometria de formato para uma região compartilhada. Coordenadas de deslocamento de uma parte limite superior esquerda da região compartilhada, a partir de um ponto de origem (0, 0) de uma tela de exibição — p. ex., (0, 0) como pixel superior mais à esquerda — podem descrever com eficiência a posição de uma região compartilhada. Além disto, se a região compartilhada for um retângulo simples, então dois conjuntos de coordenadas de deslocamento descrevendo o canto superior mais à esquerda da janela compartilhada e o canto inferior mais à direita da janela compartilhada podem descrever com eficiência a posição de localização e a geometria de formato do retângulo.
[0054] Seqüências de dados (p. ex., 506) especificadas por um se-qüenciador de saída de dados 314, incluindo seqüências 506 que imple- mentam a técnica exemplificante de dados gráficos 504 precedentes com dados de região sincronizados 502, não consomem tipicamente uma largura de banda significativamente maior do que as seqüências de dados convencionais compostas de PDUs remotas convencionais. O RDP, na verdade, possui seu próprio mecanismo de compressão de volume. Os dados de região 502 podem incluir 64 bits alocados por retângulo para descrever a geometria de formato e 32 bits adicionais alocados para cada região sendo descrita. Assim, 96 bits são necessários, se uma região tiver um retângulo, 160 bits, se a região tiver dois retângulos etc. Este tipo de dados de retângulo pode ser altamente comprimido em relações de cerca de 50% a cerca de 90%, porque os retângulos tendem a ser regulares e algoritmos codificadores são disponibilizados, que podem ser adaptáveis para reduzir o número de bits necessários para enviar os dados de região sincronizados 502 e os dados gráficos sincronizados 504 a um cliente.
[0055] O RDB possui muitas regras preexistentes. O assunto focalizado aqui descrito acrescenta uma regra, para que dados gráficos 504 não sejam enviados antes dos dados de região sincronizados 502 associados ou, em uma implementação, se os dados gráficos 504 forem enviados antes dos dados de região sincronizados 502 associados, então os dados gráficos 504 são destinados a não ser processados antes dos dados de região 502. Esta regra não impede que outros tipos de informações 514 advindos entre, ou sendo entremeados com, dados de região sincronizados 502 e dados gráficos sincronizados 504, tal como dados de posição do ponteiro do mouse (que podem ser empacotados para preceder mesmo os dados de região 502); dados de controle de conferência; dados sobre qualidade de serviços (QoS) etc. Esses outros tipos de dados auxiliares podem ser entremeados antes, após, e/ou entre os dados de região sincronizados 502 e os dados gráficos associados subseqüentes 504.
[0056] Para recapitular, um RSE exemplificante 214 coleta, de maneira síncrona, dados de região 502 e dados gráficos 504, em conjunto em um ponto de junção, sem perder a sincronia dos dados, A despeito de se WNDOBJ é usado para coletar dados de região de janela, ou de se um WINDOWS® GRAPHICS DISPLAY ACIONADOR é usado para coletar dados gráficos, desde que o RSE exemplificante 214 colete os dados de região 502 e os dados gráficos 504 de uma maneira síncrona, o assunto focalizado pode ser praticado, Como acima mencionado, o protocolo RDP tem apenas um dentre muitos protocolos remotos gráficos que são extensíveis o suficiente, para serem capazes de adicionar regiões remotas e, assim, serem utilizáveis para a prática do assunto focalizado descrito.
[0057] Em uma implementação, um compensador de largura de banda 316 pode exercer influência sobre a seqüenciação de dados realizada pelo seqüenciador de saída de dados 314. Em algumas circunstâncias, a largura de banda para transmissão de pacotes de dados a um cliente 204 pode ser temporariamente insuficiente. O compensador da largura de banda 316 decide como manipular uma largura de banda insuficiente, com base em algumas implementações sobre lógica de segurança 318. A lógica de segurança 318 inclui medidas de segurança e diferentes protocolos de segurança para vários cenários.
Implementações de Segurança [0058] Um RSE exemplifi cante 214 pode ser usado em muitos tipos de aplicativos e cenários. O tipo de aplicativo pode determinar as medidas de segurança específicas a serem usadas em circunstâncias de baixa largura de banda. Como um RSE exemplíficante 214 mantém a sincronia de dados de região e dados gráficos em condições de baixa largura de banda, depende do aplicativo e do nível de segurança desejado e/ou apropriado para o aplicativo. Uma condição de baixa largura de banda pode surgir, quando os dados de região e/ou os dados gráficos se tornarem maiores do que uma largura de banda do estado atual disponível. Por exemplo, uma janela processadora de texto compartilhada remotamente normalmente possui mais dados gráficos contínuos, devido à digitação contínua do que dados de região necessários para manter a janela retangular imóvel. Janelas de navegadores Internet compartilhadas remotamente com suas animações em constante mutação possuem dados gráficos que tipicamente reduzem os dados de região necessários para descrever a janela compartilhada remotamente. Um aplicativo, que possua gráficos complexos e um formato complexo, pode exceder a largura de banda necessária para manter dados de região e os dados gráficos sincronizados remotamente. Três tipos diferentes de ambientes de aplicativo 600, 700, 800 para um RSE exemplificante 214 são abaixo descritos para ilustrar as maneiras com que um RSE exemplificante 214 pode reagir a condições de baixa largura de banda.
[0059] A Fig. 6 mostra um ambiente de compartilhamento de aplicativos remotos 600, em que um cliente 602 usa credenciais de identificação 604 para acessar um servidor remoto 606 através de uma rede 608. Nesse ambiente 600, uma circunstância de baixa largura de banda pode surgir, onde não haja suficiente capacidade de rede para enviar todos os dados de região e os dados gráficos sincronizados que seriam necessários para janelas remotas ou regiões remotas, ou outras concessões internas tenham sido excedidas, causando a limitação da largura de banda. A baixa largura de banda pode ocorrer, porque o formato da janela sendo compartilhada se tornou muito complexo (p. ex., muitos retângulos) para ser descrita nos dados de região utilizando a largura de banda disponível.
[0060] Quando o seqüenciador de saída de dados 314 não puder mais continuar a enviar todos os dados de região sincronizados e dados gráficos associados subseqüentes, devido às limitações da largura de banda, a lógica de segurança 318 associada ao ambiente de compartilhamento de aplicativos remotos 600 pode informar o compensador de largura de banda 316 para alterar a maneira em que os dados estão sendo enviados, ou sobre a mudança dos dados em si.
[0061] Em um cenário, o seqüenciador de saída de dados 314 envia dados de região e dados gráficos, como se não houvesse limitações de largura de banda, somente mais devagar. Este tipo de solução incluído na lógica de segurança 318 pode fazer com que a tela da janela compartilhada do cliente apresente falha ou congele, pelo menos temporariamente, até que a largura de banda aumente ou até que dados de região complexos isolados sejam recebidos e, em seguida, permaneça relativamente inalterada (a janela formatada de modo complexo não se mova sobre a tela).
[0062] Uma solução alternativa para o ambiente de compartilhamento de aplicativos remotos exemplificante 600 incorpora o abandono da região remota e comutação, pelo menos temporariamente, para a área de trabalho remota. A área de trabalho remota apresenta ao cliente 602 mais informações do que a pretendida em um ambiente de compartilhamento de aplicativos remotos 600, mas visto que o cliente 602 detém toda a sessão 610, devido às credenciais de identificação 604, e a região remota está ocorrendo apenas para melhorar o fluxo de trabalho, não existe nenhuma falha de segurança em mostrar ao cliente 602 um maior subconjunto do universo limitado de informações, do que o cliente possui autorização para ver. Assim, quando deparado com largura de banda insuficiente para executar regiões remotas em um ambiente de compartilhamento de aplicativos remotos 600, o compensador de largura de banda 316 pode comutar para a área de trabalho remota, abandonando assim temporariamente os dados de região e a necessidade de sincronização.
[0063] A Fig. 7 mostra um ambiente de conferência ou colaborativo de partes múltiplas 700, onde diversos clientes, tal como um primeiro cliente 702, um segundo cliente 704, ..., e um n° cliente 706 são acoplados de forma comunicativa, através de uma rede 708, com um servidor remoto 710, que inclui um RSE exemplificante 214. A região remota exibe um subconjunto da área de trabalho do servidor simultaneamente em cada cliente, por exemplo, quando uma opção de “mostrar somente notas da reunião” é selecionada. Cada cliente pode enviar uma entrada para afetar a janela 714 ou região sendo compartilhada. Por exemplo, se o primeiro cliente 702 arrastar a janela 714 sendo compartilhada através de sua tela de exibição usando um mouse, então a janela 714 é também arrastada através de todas as telas de exibição dos outros clientes. Da mesma forma, se o n° cliente 706 clicar sobre um botão na janela 714 ou região sendo compartilhada, então a medida tomada no servidor pelo botão sendo clicado afeta todos os clientes 702, 704, ..., 706.
[0064] Nesse ambiente colaborativo 700, nenhum cliente detém a sessão. Assim, mostrar para qualquer cliente mais do que a janela 714 ou região sendo compartilhada é um risco de segurança (como ilustrado na Fig. 1). Em sistemas convencionais, quando um dos clientes move inadverti-damente a janela 714 sendo compartilhada sobre outra janela de aplicativo não sendo compartilhada na área de trabalho do servidor, vislumbres da janela não sendo compartilhada são muitas vezes visíveis por um curto período de tempo em cada uma das telas de exibição dos clientes, por causa da falta de sincronização entre os dados de região e gráficos.
[0065] Em uma condição de largura de banda relativamente baixa, por exemplo, quando os dados de região se tornam muito complexos, devido a um formato incomum de uma janela 714 ou região sendo compartilhada, ou quando a qualidade de serviço da rede diminui, o compensador de largura de banda 316 pode decidir como o seqüenciador de saída de dados 314 deve continuar a enviar os dados de região e gráficos no ambiente colaborativo 700. Visto que os clientes podem não ter permissão para visualizar toda a área de trabalho do servidor, a comutação para a área de trabalho remota, para reduzir os dados de região, não é incluída como uma opção na lógica de segurança 318 para o ambiente colaborativo 700. Se o RSE exemplificante 214 puder mostrar um subconjunto da região compartilhada que reduza significativamente os dados de região dentro das limitações da largura de banda, esta solução pode ser selecionada como uma opção da lógica de segurança 318. O acionador de vídeo 308 da RSE 214, então, inscreve uma região menor 716 com um formato simples, p. ex. um único retângulo, dentro da região compartilhada muito complexa 714. Isto pode reduzir consideravelmente a quantidade de dados de região, se menos retângulos forem necessários para descrever o novo formato inscrito, mas pode também recortar parte da região compartilhada. Por exemplo, parte do texto e imagens, bem como ícones e botões clicá-veis, menus suspensos, e barras de rolagem podem ser recortadas da visibilidade, quando a região menor 716 é exibida. Embora isto resulte em uma inconveniência operacional indesejável — um problema de utilização — o qual é esperançosamente temporário, até que a segurança tenha sido mantida, conforme o RSE exemplificante 214 assegura com confiança que nenhuma parte não-permitida da área de trabalho do servidor tenha sido exibida aos clientes 702, 704, ..., 706.
[0066] A Fig. 8 mostra um ambiente multimídia 800, no qual um RSE exemplificante 214, que é incluído em um servidor remoto ou que é associado a um concentrador de multimídia 802, é usado para enviar um fluxo de mídia 804 (p. ex. a partir do armazenamento de multimídia 806) para exibição a um cliente 808. Neste caso, o cliente 808 pode ser um dispositivo de computação ou um decodificador de televisão que comanda uma tela de cliente 810. Em um cenário, o fluxo de mídia 804 em si pode ser enviado sobre um canal fora de banda, fora de um protocolo remoto 312, tal como RDP, e fora dos protocolos de serviço de terminal etc.
[0067] Neste tipo de aplicativo, um RSE exemplificante 214 proporciona uma maneira para o cliente 808 decodificar o fluxo de mídia 804 e reproduzi-lo no topo de um protocolo remoto 312 e/ou um protocolo de serviços de terminal em uso, isto é, o fluxo de mídia 804 é reproduzido em um cliente 808 que está usando um protocolo remoto 312 e/ou um protocolo de serviços de terminal, mas o fluxo de mídia 804 em si não está sendo transmitido pelo protocolo remoto 312 e/ou o protocolo de serviços de ter- minai. O RSE exemplificante 214 manipula dados de região para um formato e posição de localização da área de trabalho do cliente de uma janela 812 ou região para reprodução do fluxo de mídia 804, informando assim ao cliente 808, onde arrastar o fluxo de mídia 804 de chegada, por exemplo, a partir do canal fora de banda.
[0068] Em resposta a um cenário de baixa largura de banda num ambiente multimídia 800 causado, por exemplo, por um formato complexo para janela 812 aumentar os dados de região, a lógica de segurança 318 pode incluir medidas para o compensador de largura de banda 316 selecionar um formato mais simples para a janela de exibição do fluxo de mídia 812. O formato mais simples diminui a quantidade de dados de região. Neste caso, supondo-se que a segurança não esteja em risco em um ambiente multimídia 800 (por exemplo, se o ambiente multimídia 800 for meramente uma rede multimídia para uma residência), o RSE exemplificante 214 pode circunscrever a janela complexa original 812 que precisava de excessivos dados de região para descrever com a nova janela mais simples 814, que é maior do que a janela original 812. A nova janela maior 814 não é uma parte maior de uma área de trabalho do servidor, que pode conter informações secretas, mas meramente uma porta de visualização ampliada, através da qual uma versão ampliada do fluxo de mídia 804 será mostrada, isto é, a “área de cobertura” visual do fluxo de mídia 804 é redi-mensionada para se ajustar à janela maior. Essa janela maior 814 impede o truncamento do conteúdo da mídia (p. ex., perda da parte de um filme), que iria ocorrer, se uma janela menor do que a janela complexa original 812 fosse selecionada para resolver o problema do formato da janela complexa. A janela maior 814, porém, pode truncar ou ocultar inteiramente parte dos controles na tela de uma interface de usuário 816 para controle do fluxo de mídia 804. Embora isto resulte em uma inconveniência operacional indesejável, já que partes da tela de exibição do cliente foram cobertas por uma maior janela de fluxo de mídia, esta resolução de uma situa- ção de baixa largura de banda resulta em somente um possível problema de utilização, que é esperançosamente temporário. A segurança dentro do ambiente multimídia 800 não foi comprometida pela medida de segurança aplicada para baixa largura de banda.
Processos Exemplificantes [0069] A Fig. 9 mostra um processo exemplificante 900 de dados de região e dados gráficos de sincronismo para um sistema gráfico remoto. O processo exemplificante 900 pode ser executado por um dispositivo, tal como o RSE exemplificante 214 mostrado nas figs. 2 e 3. No fluxograma, as operações são sintetizadas em blocos individuais. As operações podem ser executadas em hardware e/ou como instruções legíveis por máquina (software ou firmware) que podem ser executadas por um processador.
[0070] No bloco 902, dados de região para exibição de uma região de uma área de trabalho do servidor remotamente em uma tela de cliente são reunidos de maneira síncrona. Os dados de região podem descrever geometria de região, tal como um formato e uma posição da região na área de trabalho do servidor e/ou uma posição que a região irá ocupar na área de trabalho do cliente.
[0071] No bloco 904, dados gráficos para a região são reunidos de maneira síncrona. Os dados gráficos descrevem o conteúdo visual que será exibido na região, quando a região for executada no cliente. Ou, a partir de outro ponto de vista, os dados de região recortam os dados gráficos na geometria (formato e posição) especificada pelos dados de região.
[0072] No bloco 906, os dados de região e os dados gráficos são enviados a um cliente, enquanto que mantendo a sincronia entre os dados de região e os dados gráficos. A manutenção da sincronia pode incluir a evi-tação da adição de retardos no processamento de diferentes fluxos de dados que representam cada um dos dados de região e dos dados gráficos; uso correto de um protocolo remoto para transmitir os dados sincronizados; seqüenciação de uma determinada quantidade de dados de região com dados gráficos associados, de modo que um cliente possa relacionar os dados gráficos aos dados de região associados etc.
[0073] A Fig. 10 mostra um processo exemplificante 1000 de manutenção da segurança de informações privadas no sincronismo de dados de região e dados gráficos para um sistema gráfico remoto durante uma condição de baixa largura de banda, p. ex., uma transmissão temporária com baixa largura de banda entre o servidor 202 e o cliente 204. O processo exemplificante 1000 pode ser executado por um dispositivo, tal como o RSE exemplificante 214 mostrados nas figs. 2 e 3. No fluxograma, as operações são sintetizadas em blocos individuais. As operações podem ser executadas em hardware e/ou como instruções legíveis por máquina (software ou firmware) que podem ser executadas por um processador.
[0074] No bloco 1002, dados de região e os dados gráficos são reunidos de maneira síncrona.
[0075] No bloco 1004, o processo exemplificante 1000 consulta onde existe largura de banda suficiente para enviar os dados de região e os dados gráficos sincronizados, por exemplo, dentro de limitações de tempo especificadas por um protocolo remoto 312. Se não houver largura de banda suficiente, o processo exemplificante 1000 se ramifica para o bloco 1006. Se houver largura de banda suficiente, o processo exemplificante 1000 se ramifica para o bloco 1008.
[0076] No bloco 1006, os dados de região sincronizados e os dados gráficos sincronizados são enviados ao cliente.
[0077] No bloco 1008, o processo exemplificante 1000 consulta se o cliente detém toda a sessão. Se o cliente detiver toda a sessão, então o processo exemplificante se ramifica para o bloco 1010. Se o cliente não detiver toda a sessão, então o processo exemplificante se ramifica para o bloco 1012.
[0078] No bloco 1010, dados gráficos para toda a área de trabalho do servidor são enviados ao cliente, mas dados de região não são enviados.
[0079] No bloco 1012, o processo exemplificante 1000 consulta se o conteúdo visual da região compartilhada pode ser truncado. Se o conteúdo visual da região compartilhada puder ser truncado, então o processo exemplificante 1000 se ramifica para os blocos 1014 e 1016. Se o conteúdo visual da região compartilhada não puder ser truncado, então o processo exemplificante 1000 se ramifica para os blocos 1018, 1020 e 1022, [0080] No bloco 1014, uma nova região compartilhada menor e mais simples, inscrita na região compartilhada original, é selecionada.
[0081] No bloco 1016, dados de região sincronizados e dados gráficos sincronizados para a nova região são enviados ao cliente.
[0082] Por outro lado, o bloco 1018, uma nova região compartilhada maior e mais simples circunscrevendo a região compartilhada original, é selecionada.
[0083] No bloco 1020, dados de região sincronizados e dados gráficos sincronizados para a nova região são enviadas ao cliente.
[0084] No bloco 1022, o conteúdo visual para a região compartilhada original pode ser redímensionado para ajustara nova região compartilhada maior. Porém, gráficos da área de trabalho do servidor não são usados para preencher as partes da nova janela maior, que permanecem fora da região compartilhada original, já que isto pode destruir a característica de segurança do processo exemplificante 1000. A opção oferecida pelos blocos 1018, 1020 e 1022 é útil, quando os dados gráficos forem de uma fonte externa ao servidor, tal como um fluxo de multimídia do armazenamento digital.
Dispositivo de Computação Exemplificante [0085] A Fig. 11 mostra um dispositivo de computação exemplificante 1100, apropriado como um ambiente para a prática dos aspectos do assunto focalizado, por exemplo, como um servidor remoto 202 para hospedar um RSE exemplificante RSE exemplificante 214, ou como um cliente 204. Os componentes do dispositivo de computação 1100 podem incluir, mas não são limitados a, uma unidade de processamento 1120, uma memória de sistema 1130, e um barramento de sistema 1121, que acopla vários componentes de sistema, incluindo a memória de sistema 1130, na unidade de processamento 1120. O barramento de sistema 1121 pode ser qualquer um de diversos tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local usando qualquer uma de uma variedade de arquiteturas de barramento. Para fins de exemplo, e não de limitação, essas arquiteturas incluem barramento Industry Standard Architecture (ISA), barramento Micro Channel Architecture (MCA), barramento Enhanced ISA (EISA), barramento local Vídeo Electronics Standards Association (VESA), e barramento Peripheral Component Interconnect (PCI), também conhecido como barramento Mezzanine.
[0086] O dispositivo de computação exemplificante 1100 inclui tipicamente uma variedade de mídias legíveis por dispositivo de computação. Mídias legíveis por dispositivo de computação podem ser quaisquer mídias disponíveis que possam ser acessadas por dispositivo de computação 1100 e incluem mídias voláteis e não-voláteis, mídias removíveis e não-removíveis. Para fins de exemplo, e não de limitação, mídias legíveis por dispositivo de computação podem compreender mídias armazenadoras de dispositivo de computação e mídias de comunicação. Mídias armazenadoras de dispositivo de computação incluem mídias voláteis e não-voláteis, removíveis e não-removíveis, implementadas em qualquer processo ou tecnologia para armazenamento de informações, tais como instruções legíveis por dispositivo de computação, estruturas de dados, módulos de programa, ou outros dados. Mídias armazenadoras de dispositivo de computação incluem, mas não são limitadas a, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento em disco ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos armazenadores magnéticos, ou qualquer outra mídia que possa ser usada para armazenar as informações desejadas e que possa ser acessada pelo dispositivo de computação 1100. As mídias de comunicação incorporam tipicamente instruções legíveis por dispositivo de computação, estruturas de dados, módulos de programa ou outros dados em um sinal modulado de dados, tal como uma onda portadora ou outro mecanismo de transporte, e incluem quaisquer mídias fornecedoras de informações. O termo “sinal modulado de dados” significa um sinal que possui uma ou mais de suas características definidas ou alteradas de forma a codificar informações no sinal. Para fins de exemplo, e não de limitação, as mídias de comunicação incluem mídias cabeadas, tal como uma rede cabeada ou conexão direta cabeada, e mídias sem fio, tal como acústica, RS, infravermelha e outras mídias sem fio. Combinações de qualquer um dos acima devem ser também incluídas dentro do escopo das mídias legíveis por dispositivo de computação.
[0087] A memória de sistema 1130 inclui mídias armazenadoras de dispositivo de computação na forma de memória volátil e/ou não-volátil, tal como memória somente de leitura (ROM) 1131 e memória de acesso aleatório (RAM) 1132. Um sistema básico de entrada/ saída 1133 (BIOS) contendo as rotinas básicas que ajudam a transferir informações entre elementos dentro do dispositivo de computação 1100, tal como durante a iniciação, é tipicamente armazenado na ROM 1131. A RAM 1132 contém tipicamente módulos de dados e/ou de programa que são imediatamente acessíveis, e/ou atualmente sendo operados, pela unidade de processamento 1120. Para fins de exemplo, e não de limitação, a Fig. 11 ilustra o sistema operacional 1134, programas de aplicativo 1135, outros módulos de programa 1136, e dados de programa 1137. Embora o RSE exemplifi-cante 214 seja ilustrado como software na memória de acesso aleatório 1132, outras implementações de um RSE exemplificante 214 podem ser hardware ou combinações de software e hardware.
[0088] O dispositivo de computação exemplificante 1100 pode ainda incluir outras mídias armazenadoras de dispositivo de computação volátil/ não-volátil, removível/ não-removível. Somente para fins de exemplo, a Fig. 11 ilustra um unidade de disco rígido 1141 que lê ou grava mídias magnéticas não-removíveis, não-voláteis, um unidade de disco magnético 1151 que lê ou grava um disco magnético removível, não-volátil 1152, e um unidade de disco ótico 1155 que lê ou grava um disco ótico não-volátil, removível 1156, tal como um CD ROM ou outras mídias óticas. Outras mídias armazenadoras de dispositivo de computação removível/ não-removível, volátil/ não-volátil, que podem ser usadas no ambiente operacional exemplificante, incluem, mas não são limitadas a, cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido e semelhantes. A unidade de disco rígido 1141 é tipicamente conectado ao barramento de sistema 1121 através de uma interface de memória não-removível, tal como a interface 1140, e a unidade de disco magnético 1151 e a unidade de disco ótico 1155 são tipicamente conectados ao barramento de sistema 1121 por uma interface de memória removível, tal como a interface 1150.
[0089] As unidades e suas mídias armazenadoras de dispositivo de computação associadas, acima discutidas e ilustradas na Fig. 11, proporcionam armazenamento de instruções legíveis por dispositivo de computação, estruturas de dados, módulos de programa, e outros dados para o dispositivo de computação 1100. Na Fig. 11, por exemplo, a unidade de disco rígido 1141 é ilustrado como armazenando o sistema operacional 1144, programas de aplicativo 1145, outros módulos de programa 1146, e dados de programa 1147. Observe que estes componentes podem ser os mesmos ou diferentes do sistema operacional 1134, programas de aplicativo 1135, outros módulos de programa 1136, e dados de programa 1137. O sistema operacional 1144, programas de aplicativo 1145, outros módulos de programa 1146, e dados de programa 1147 são aqui apresentados com números diferentes para ilustrar que, no mínimo, eles são cópias diferentes. Um usuário pode inserir comandos e informações no dispositivo de computação exemplificante 1100, através de dispositivos de entrada, tal como um teclado 1148 e dispositivo apontador 1161, normalmente conhecido como mouse, “trackball”, ou teclado sensível ao toque. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, joystick, game pad, antena parabólica, scanner, ou semelhantes. Esses e outros dispositivos de entrada são muitas vezes conectados na unidade de processamento 1120, através de uma interface de entrada de usuário 1160 que é acoplada ao barramento de sistema, mas podem ser conectados por outras estruturas de barramento e interface, tais como uma porta paralela, porta de jogos, ou um barramento serial universal (USB). Um monitor 1162, ou outro tipo de dispositivo de tela, é também conectado ao barramento de sistema 1121 através de uma interface, tal como interface de vídeo 1190. Além do monitor 1162, os dispositivos de computação podem ainda incluir outros dispositivos de saída periférica, tais como alto-falante 1197 e impressora 1196, que pode ser conectada através de uma interface periférica de saída 1195.
[0090] O dispositivo de computação exemplificante 1100 pode operar em um ambiente de rede, usando-se conexões lógicas para um ou mais dispositivos de computação remotos, tal como um dispositivo de computação remoto 1180. O dispositivo de computação remoto 1180 pode ser um dispositivo de computação pessoal, um servidor, um roteador, um PC de rede, um dispositivo de mesmo nível, ou outro nó de rede comum, e tipicamente inclui muitos, ou todos os, elementos acima descritos com relação ao dispositivo de computação 1100, embora somente um dispositivo armazenador de memória 1181 tenha sido ilustrado na Fig. 11. As conexões lógicas ilustradas na Fig. 11 incluem uma rede local (LAN) 1171 e uma rede de longa distância (WAN) 1173, mas podem também incluir outras redes. Tais ambientes de rede são comuns em escritórios, redes de dispositivos de computação em nível de empresas, intranet, e a Internet.
[0091] Quando usado em um ambiente de rede LAN, o dispositivo de computação exemplificante 1100 é conectado na LAN 1171 através de um adaptador ou interface de rede 1170. Quando usado em um ambiente de rede WAN, o dispositivo de computação exemplificante 1100 inclui tipicamente um modem 1172 ou outro meio para estabelecer comunicações sobre a WAN 1173, tal como a Internet. Um modem 1172, que pode ser interno ou externo, pode ser conectado ao barramento de sistema 1121 através da interface de entrada de usuário 1160, ou outro mecanismo apropriado. Em um ambiente de rede, os módulos de programa ilustrados com relação ao dispositivo de computação exemplificante 1100, ou partes deste, podem ser armazenados no dispositivo armazenador de memória remota. Para fins de exemplo, e não de limitação, a Fig. 11 ilustra programas de aplicativos remotos 1185 como residentes no dispositivo de memória 1181. Deverá ser apreciado que as conexões de rede mostradas são exemplificantes e que outros meios de estabelecer um enlace de comunicações entre os dispositivos de computação podem ser usados. CONCLUSÃO
[0092] Deve ser observado, que o assunto focalizado acima descrito pode ser implementado em hardware, software ou hardware e software. Em certas implementações, o sistema, mecanismo, e processos correlatos exemplificantes podem ser descritos no contexto geral e instruções executáveis por dispositivos de computação, tais como módulos de programa, sendo executados por um decodificador de televisão e/ou por um dispositivo de computação. De uma maneira geral, módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados etc. que realizam tarefas específicas ou implementam tipos de dados abstratos específicos. O assunto focalizado pode ser também praticado em ambientes de comunicações distribuídos, onde tarefas são realizadas através de comunicação sem fio por dispositivos de processamento remotos, que são interligados através de uma rede de comunicações. Em uma rede sem fio, módulos de programa podem ser localizados em mídias armazenadoras de dispositivos de comunicações locais e remotos, incluindo dispositivos armazenadores de memória.
[0093] A discussão anterior descreve sistemas e processos exemplifi-cantes sincronizando dados de região e os dados gráficos para sistemas gráficos remotos. Embora o assunto focalizado tenha sido descrito em linguagem específica para características estruturais e/ou atos metodológicos, deve ficar claro que o assunto focalizado definido nas reivindicações apensas não é necessariamente limitado às características ou atos específicos descritos. Ao invés disso, as características e atos específicos são divulgados como formas exemplificantes de implementação das reivindicações.
REIVINDICAÇÕES

Claims (1)

1. Método compreendendo as etapas de: reunir sincronamente dados de região e dados gráficos de modo a manter uma associação dos dados de região e dos dados gráficos a partir de uma região visual de uma tela de servidor de computação a ser exibida remotamente na tela de um cliente; se a largura de banda for suficiente para enviar os dados de região e os dados gráficos ao cliente, então enviar os dados de região e os dados gráficos ao cliente, caracterizado pelo fato de que um dado de região, em sincronismo com um dado gráfico, é enviado antes do dado gráfico em uma ordem sequencial que representa a associação dos dados de região e os dados gráficos; se a largura de banda for insuficiente para enviar os dados de região e os dados gráficos ao cliente, então: (a) se o cliente detiver a totalidade das informações exibíveis na tela do servidor de computação, então enviar somente dados gráficos descrevendo todo o conteúdo visual da tela do servidor de computação; mas (b) se o cliente não detiver a totalidade das informações exibíveis na tela do servidor de computação, então (i) se o conteúdo visual da região visual puder ser truncado, então selecionar uma menor região visual inscrita na região visual e enviar os dados de região sincronizados e dados gráficos sincronizados associados à menor região visual, mas(ii) se o conteúdo visual da região visual não puder ser truncado, então selecionam uma maior região visual circunscrevendo a região visual, enviar os dados de região sincronizados e dados gráficos sincronizados associados à maior região visual, e redimensionar o conteúdo visual da região visual, para se adequar à maior região visual.
BRPI0406421A 2003-10-23 2004-07-22 método para sistemas gráficos remotos BRPI0406421B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/691,836 US7275212B2 (en) 2003-10-23 2003-10-23 Synchronized graphics and region data for graphics remoting systems
PCT/US2004/023638 WO2005045737A2 (en) 2003-10-23 2004-07-22 Synchronized graphic and region data for graphics remoting systems

Publications (2)

Publication Number Publication Date
BRPI0406421A BRPI0406421A (pt) 2005-10-04
BRPI0406421B1 true BRPI0406421B1 (pt) 2017-05-23

Family

ID=34521949

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0406421A BRPI0406421B1 (pt) 2003-10-23 2004-07-22 método para sistemas gráficos remotos

Country Status (11)

Country Link
US (1) US7275212B2 (pt)
EP (1) EP1695256B1 (pt)
JP (1) JP2007509408A (pt)
KR (1) KR20060109283A (pt)
CN (1) CN100492346C (pt)
AU (1) AU2004279185A1 (pt)
BR (1) BRPI0406421B1 (pt)
CA (1) CA2502686A1 (pt)
MX (1) MXPA05006619A (pt)
RU (1) RU2368940C2 (pt)
WO (1) WO2005045737A2 (pt)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004004565A (ja) * 2002-04-04 2004-01-08 Canon Inc 画像処理装置及び方法、並びにプログラム
JP2004133733A (ja) * 2002-10-11 2004-04-30 Sony Corp 表示装置および方法、並びにプログラム
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US7546543B2 (en) * 2004-06-25 2009-06-09 Apple Inc. Widget authoring and editing environment
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US8302020B2 (en) * 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7490295B2 (en) * 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8762540B2 (en) * 2004-09-01 2014-06-24 Hewlett-Packard Development Company, L.P. Managing multiple remote computing sessions displayed on a client device
US8234577B1 (en) * 2005-05-23 2012-07-31 Glance Networks, Inc. Method and apparatus for the transmission of changed host display information
US7676549B2 (en) * 2005-05-27 2010-03-09 Microsoft Corporation Techniques for providing accessibility options in remote terminal sessions
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7533189B2 (en) * 2005-06-21 2009-05-12 Microsoft Corporation Enabling a graphical window modification command to be applied to a remotely generated graphical window
US7765483B2 (en) * 2005-09-12 2010-07-27 Microsoft Corporation Filtering obscured data from a remote client display
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7954064B2 (en) * 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7707514B2 (en) * 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US20070162850A1 (en) * 2006-01-06 2007-07-12 Darin Adler Sports-related widgets
US7996776B2 (en) * 2006-02-27 2011-08-09 Microsoft Corporation Shared telepointer
US8127036B2 (en) * 2006-06-30 2012-02-28 Microsoft Corporation Remote session media data flow and playback
US20080034309A1 (en) * 2006-08-01 2008-02-07 Louch John O Multimedia center including widgets
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
KR100885444B1 (ko) * 2006-10-20 2009-02-24 엘지전자 주식회사 네트워크에서 디바이스의 출력을 제어하는 방법
US20080120570A1 (en) * 2006-11-22 2008-05-22 Bluetie, Inc. Methods for managing windows within an internet environment and systems thereof
US20080209048A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Loading A Mirror Driver In Remote Terminal Server Session
US9794605B2 (en) * 2007-06-28 2017-10-17 Apple Inc. Using time-stamped event entries to facilitate synchronizing data streams
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US9239666B2 (en) * 2007-09-12 2016-01-19 Citrix Systems, Inc. Methods and systems for maintaining desktop environments providing integrated access to remote and local resources
US8074581B2 (en) * 2007-10-12 2011-12-13 Steelcase Inc. Conference table assembly
US8046695B2 (en) * 2007-10-19 2011-10-25 Citrix Systems, Inc. Methods and systems for incorporating at least one window from a first desktop environment having a first themed graphical display into a second desktop environment having a second themed graphical display
US9037974B2 (en) * 2007-12-28 2015-05-19 Microsoft Technology Licensing, Llc Creating and editing dynamic graphics via a web interface
US8166449B2 (en) * 2008-01-17 2012-04-24 Microsoft Corporation Live bidirectional synchronizing of a visual and a textual representation
US20090210817A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Mechanism for increasing remote desktop responsiveness
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US20090300131A1 (en) * 2008-05-27 2009-12-03 Supportspace Ltd. Simultaneous remote and local control of computer desktop
US8200896B2 (en) * 2008-06-06 2012-06-12 Microsoft Corporation Increasing remote desktop performance with video caching
US8108777B2 (en) 2008-08-11 2012-01-31 Microsoft Corporation Sections of a presentation having user-definable properties
KR20100046078A (ko) * 2008-10-10 2010-05-06 삼성전자주식회사 휴대 단말기와 서버로 구성된 시스템 및 그 시스템에서 데이터 동기화 방법
US20140361954A1 (en) 2013-06-07 2014-12-11 Lewis Epstein Personal control apparatus and method for sharing information in a collaboration workspace
US10631632B2 (en) 2008-10-13 2020-04-28 Steelcase Inc. Egalitarian control apparatus and method for sharing information in a collaborative workspace
WO2010048539A1 (en) * 2008-10-26 2010-04-29 Citrix Systems, Inc. Panning a native display on a mobile computing device to a window, interpreting a gesture-based instruction to scroll contents of the window, and wrapping text on the window
US9135024B2 (en) * 2008-11-30 2015-09-15 Red Hat Israel, Ltd. Playing multimedia content at remote graphics display client
US8654134B2 (en) * 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US8180905B2 (en) * 2008-12-09 2012-05-15 Microsoft Corporation User-mode based remote desktop protocol (RDP) encoding architecture
JP2010157112A (ja) * 2008-12-26 2010-07-15 Sony Corp Icカード、データ制御方法およびプログラム
US8473571B2 (en) 2009-01-08 2013-06-25 Microsoft Corporation Synchronizing presentation states between multiple applications
US20100259464A1 (en) 2009-04-14 2010-10-14 Jae Young Chang Terminal and controlling method thereof
US10127524B2 (en) 2009-05-26 2018-11-13 Microsoft Technology Licensing, Llc Shared collaboration canvas
US20100306018A1 (en) * 2009-05-27 2010-12-02 Microsoft Corporation Meeting State Recall
US10884607B1 (en) 2009-05-29 2021-01-05 Steelcase Inc. Personal control apparatus and method for sharing information in a collaborative workspace
WO2011036715A1 (ja) * 2009-09-24 2011-03-31 株式会社 東芝 サーバ、システム
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
EP2367118A1 (en) * 2010-03-15 2011-09-21 GMC Software AG Method and devices for generating two-dimensional visual objects
US9143570B2 (en) * 2010-05-04 2015-09-22 Microsoft Technology Licensing, Llc Desktop screen sharing over HTTP
CN102437999A (zh) * 2010-09-29 2012-05-02 国际商业机器公司 通过动态分区改进应用共享的方法和系统
JP5345998B2 (ja) * 2010-11-16 2013-11-20 レノボ・シンガポール・プライベート・リミテッド コンピュータ・システムの制御方法およびコンピュータ
US9118612B2 (en) 2010-12-15 2015-08-25 Microsoft Technology Licensing, Llc Meeting-specific state indicators
US9383888B2 (en) 2010-12-15 2016-07-05 Microsoft Technology Licensing, Llc Optimized joint document review
US9864612B2 (en) 2010-12-23 2018-01-09 Microsoft Technology Licensing, Llc Techniques to customize a user interface for different displays
US20120185543A1 (en) * 2011-01-18 2012-07-19 Samsung Electronics Co., Ltd. Apparatus and method for sharing information on a webpage
US9261603B2 (en) * 2011-04-11 2016-02-16 Telenav, Inc. Navigation system with conditional based application sharing mechanism and method of operation thereof
FR2975199B1 (fr) * 2011-05-09 2013-06-28 Archos Procede et dispositif de controle d'au moins un appareil par au moins un autre appareil, systeme mettant en oeuvre un tel dispositif.
US20140055400A1 (en) * 2011-05-23 2014-02-27 Haworth, Inc. Digital workspace ergonomics apparatuses, methods and systems
US9727227B2 (en) 2011-07-28 2017-08-08 Microsoft Technology Licensing, Llc Multi-touch remoting
US9304662B2 (en) 2011-08-25 2016-04-05 Vmware, Inc. User interface virtualization techniques
US8682973B2 (en) 2011-10-05 2014-03-25 Microsoft Corporation Multi-user and multi-device collaboration
US9996241B2 (en) 2011-10-11 2018-06-12 Microsoft Technology Licensing, Llc Interactive visualization of multiple software functionality content items
US10198485B2 (en) 2011-10-13 2019-02-05 Microsoft Technology Licensing, Llc Authoring of data visualizations and maps
JP5818353B2 (ja) * 2011-12-02 2015-11-18 アルパイン株式会社 画面表示制御システムおよび画面表示制御方法
JP5779085B2 (ja) * 2011-12-22 2015-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、画面出力システム、画面出力制御方法およびプログラム
US9542080B2 (en) 2012-04-25 2017-01-10 Vmware, Inc. User interface virtualization of context menus
KR102053315B1 (ko) * 2012-06-29 2019-12-06 삼성전자주식회사 콘텐트를 표시하는 방법 및 그 장치
US20140108940A1 (en) * 2012-10-15 2014-04-17 Nvidia Corporation Method and system of remote communication over a network
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US9836437B2 (en) * 2013-03-15 2017-12-05 Google Llc Screencasting for multi-screen applications
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
US9339159B2 (en) 2014-06-13 2016-05-17 Aerus Llc Vacuum brush drive
US10621276B2 (en) 2013-10-24 2020-04-14 Wmware, Inc. User interface virtualization for web applications
US9813461B2 (en) * 2013-11-04 2017-11-07 Cisco Technology, Inc. Viewing full screen applications in a sharing session
RU2666642C2 (ru) * 2014-03-27 2018-09-11 Иноземцев Юрий Александрович Способ генерации примитивов изображения
US10318320B1 (en) * 2015-12-07 2019-06-11 Amazon Technologies, Inc. Virtual desktop access using device-native user interfaces
KR20180013169A (ko) * 2016-07-28 2018-02-07 삼성전자주식회사 콘텐츠 표시 방법 및 이를 사용하는 전자 장치
DE102017219385A1 (de) * 2016-11-13 2018-05-17 Honda Motor Co., Ltd. System und Verfahren zum Bereitstellen von Absolut- und Zonenkoordinatenabbildung mit Grafikanimationen
US10264213B1 (en) 2016-12-15 2019-04-16 Steelcase Inc. Content amplification system and method
CN108989811B (zh) * 2017-06-05 2022-06-03 中兴通讯股份有限公司 云桌面系统、及其图像序列压缩编码方法和介质
EP3617869B1 (en) 2017-06-13 2024-02-28 Huawei Technologies Co., Ltd. Display method and apparatus
CN111263231B (zh) * 2018-11-30 2022-07-15 西安诺瓦星云科技股份有限公司 窗口设置方法、装置、系统和计算机可读介质
US11837150B2 (en) 2019-08-16 2023-12-05 Silicon Works Co., Ltd. Controller configured to generate display area information and display device including the same
US11394766B2 (en) * 2020-04-15 2022-07-19 Wells Fargo Bank, N.A. Systems and methods for establishing, using, and recovering universal digital identifiers
CN115472140B (zh) * 2022-09-09 2024-08-23 维沃移动通信有限公司 显示方法、显示装置、电子设备和可读存储介质

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2039027C (en) * 1990-05-22 1998-07-07 Stephen Troy Eagen Method and apparatus for assisting in the presentation and removal of windows
AU8393191A (en) * 1990-07-10 1992-02-04 Athenix Corporation Selective content synchronization of multiple image buffers
JPH05108511A (ja) * 1991-10-14 1993-04-30 Toshiba Corp 会議システムおよびその画像表示端末装置
JP3824276B2 (ja) * 1992-08-05 2006-09-20 富士ゼロックス株式会社 共有データに対する表示変更共有化方法および装置
GB2270581A (en) * 1992-09-15 1994-03-16 Ibm Computer workstation
US5608872A (en) * 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US5583993A (en) * 1994-01-31 1996-12-10 Apple Computer, Inc. Method and apparatus for synchronously sharing data among computer
US5682486A (en) * 1995-03-14 1997-10-28 International Business Machines Corporation Video display and control of multiple graphical interfaces
JP2781738B2 (ja) * 1995-03-29 1998-07-30 日本電気ホームエレクトロニクス株式会社 プレゼンテーションシステム
JPH0962631A (ja) * 1995-08-24 1997-03-07 Hitachi Ltd 共同作業支援システム
US5867156A (en) * 1995-11-08 1999-02-02 Intel Corporation Automatic viewport display synchronization during application sharing
US6437803B1 (en) * 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
US5760769A (en) * 1995-12-22 1998-06-02 Intel Corporation Apparatus and method for identifying a shared application program in a computer during teleconferencing
AU1935497A (en) * 1996-03-29 1997-10-22 British Telecommunications Public Limited Company Communication method and system between host and remote workstation
JPH1021229A (ja) * 1996-07-08 1998-01-23 Omron Corp 情報伝送表示装置、情報伝送表示方法およびテレビ会議装置
US6304895B1 (en) * 1997-08-22 2001-10-16 Apex Inc. Method and system for intelligently controlling a remotely located computer
DE69842037D1 (de) * 1997-09-04 2011-01-20 Comcast Ip Holdings I Llc Vorrichtung für videozugang und kontrolle über ein rechnernetzwerk mit bildkorrektur
JP2000029861A (ja) * 1998-07-15 2000-01-28 Nippon Telegr & Teleph Corp <Ntt> 遠隔協調研修方法及び遠隔協調研修装置及びその遠隔協調研修方法を記録した記録媒体
JP3627791B2 (ja) * 1998-08-10 2005-03-09 富士通株式会社 他端末操作装置
JP2000066968A (ja) * 1998-08-26 2000-03-03 Nippon Telegr & Teleph Corp <Ntt> 共有画面の同期制御方法と共有画面の同期制御システムおよび共有画面の同期制御プログラムを記録した記録媒体
JP3842493B2 (ja) * 1999-10-04 2006-11-08 富士通株式会社 3次元オブジェクト共有処理方法及び記憶媒体
US6877027B1 (en) * 2000-02-19 2005-04-05 Hewlett-Packard Development Company, L.P. System and method for providing synchronization verification of multiple applications across remote systems
JP2002073242A (ja) * 2000-08-31 2002-03-12 Internatl Business Mach Corp <Ibm> アノテーション方法、アプリケーションウィンドウに対する追加的な書き込み方法、コンピュータ装置、自動契約機、コラボレーションシステム、記憶媒体、コンピュータ・プログラム・プロダクト、およびプログラム伝送装置
JP3936835B2 (ja) * 2000-09-20 2007-06-27 株式会社日立製作所 計算機ネットワーク用の端末装置および操作履歴記録方法
JP3852742B2 (ja) * 2000-11-02 2006-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理システム、端末装置、情報処理方法および記憶媒体
US20020138624A1 (en) * 2001-03-21 2002-09-26 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Collaborative web browsing
US7225225B2 (en) * 2001-03-30 2007-05-29 Sharp Laboratories Of America, Inc. Selective synchronization of web browsers
US20020174181A1 (en) * 2001-04-13 2002-11-21 Songxiang Wei Sharing OpenGL applications using application based screen sampling
US20030085922A1 (en) * 2001-04-13 2003-05-08 Songxiang Wei Sharing DirectDraw applications using application based screen sampling
JP2003091489A (ja) * 2001-09-14 2003-03-28 Sony Corp ネットワーク情報処理システム及び情報処理方法
JP2003150527A (ja) * 2001-11-05 2003-05-23 Internatl Business Mach Corp <Ibm> チャットシステム、その端末装置及びチャットサーバ並びにプログラム
JP2003256103A (ja) * 2002-02-28 2003-09-10 Nisca Corp 画像表示装置、画像表示システム、画像表示方法、画像表示プログラム、画像表示プログラムを記憶した記録媒体
JP2004004565A (ja) * 2002-04-04 2004-01-08 Canon Inc 画像処理装置及び方法、並びにプログラム
JP2003030122A (ja) * 2002-05-08 2003-01-31 Digital Vision Laboratories Corp ネットワークシステムに適用するデータ共有方法及びデータ処理装置
US7197751B2 (en) * 2003-03-12 2007-03-27 Oracle International Corp. Real-time collaboration client
US7222305B2 (en) * 2003-03-13 2007-05-22 Oracle International Corp. Method of sharing a desktop with attendees of a real-time collaboration

Also Published As

Publication number Publication date
WO2005045737A3 (en) 2006-04-13
CN100492346C (zh) 2009-05-27
KR20060109283A (ko) 2006-10-19
EP1695256A2 (en) 2006-08-30
CN1864154A (zh) 2006-11-15
CA2502686A1 (en) 2005-04-23
US20050091571A1 (en) 2005-04-28
JP2007509408A (ja) 2007-04-12
RU2005114494A (ru) 2006-01-20
BRPI0406421A (pt) 2005-10-04
RU2368940C2 (ru) 2009-09-27
EP1695256A4 (en) 2010-03-03
MXPA05006619A (es) 2005-08-16
AU2004279185A8 (en) 2008-10-02
EP1695256B1 (en) 2016-09-07
WO2005045737A2 (en) 2005-05-19
AU2004279185A1 (en) 2005-06-23
US7275212B2 (en) 2007-09-25

Similar Documents

Publication Publication Date Title
BRPI0406421B1 (pt) método para sistemas gráficos remotos
US7844848B1 (en) Method and apparatus for managing remote display updates
US12177280B2 (en) Ultra-low latency remote application access
US7847755B1 (en) Method and apparatus for the identification and selective encoding of changed host display information
JP6288594B2 (ja) デスクトップクラウドベースのメディア制御方法およびデバイス
US7908325B1 (en) System and method for event-based collaboration
KR101942270B1 (ko) 재생 지연 방지 시스템을 포함하는 미디어 재생 장치 및 방법
US20050086344A1 (en) Method and system for unrestricted, symmetric remote scripting
CN102668495A (zh) 低延时传输协议的方法和系统
EP1934781A1 (en) Filtering obscured data from a remote client display
CN102349063A (zh) 无拆分远程桌面协议(rdp)显示
US20210154576A1 (en) Vector graphics-based live streaming of video games
CN101238457A (zh) 支持任意格式大对象通信的远程协议
JP2007519074A (ja) リモートなビジュアル構成のためのプロトコル
CN102929570A (zh) 屏幕描述方法及装置
CN113129933B (zh) 终端展示控制方法、装置、设备及计算机可读存储介质
CN119211599A (zh) 远程桌面的控制方法、系统和电子设备及存储介质
US20100271389A1 (en) Information Handling System And Method For Using Main Link Data Channels
Renambot et al. Griz: experience with remote visualization over an optical grid
Baratto THINC: a virtual and remote display architecture for desktop computing and mobile devices
US12335738B2 (en) System and method for real-time applications over wireless networks
CN120676178B (zh) 一种基于远程gpu桌面的直播多开方法及系统
EP1821490A1 (en) Method for transmitting graphical data to a thin client
CN121441912A (zh) 参数调整方法、装置、设备及介质
CN121209818A (zh) 一种基于鸿蒙next投屏远控方法及系统

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B09X Republication of the decision to grant [chapter 9.1.3 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]
B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 17A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2629 DE 25-05-2021 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.