СИНХРОНИЗИРОВАННЫЕ ГРАФИЧЕСКИЕ ДАННЫЕ И ДАННЫЕ ОБЛАСТИ ДЛЯ СИСТЕМ ДИСТАНЦИОННОЙ РАБОТЫ С ГРАФИЧЕСКИМИ ДАННЫМИ
SYNCHRONISED GRAPHIC DATA AND REGION DATA FOR SYSTEMS OF REMOTE HANDLING GRAPHIC DATA

Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к совместному использованию прикладных программ вычислительных устройств и, более конкретно, к синхронизированным графическим данным и данным области для систем дистанционной работы с графическими данными.
Предшествующий уровень техники
Системы дистанционной работы с графическими данными позволяют сетевым клиентам вычислительного устройства подсоединяться к серверу и получать визуальное представление, по меньшей мере, некоторой части графических изображений, отображаемых или выводимых сервером. Часто сетевой клиент получает возможность отображать все выходные графические изображения, ассоциированные с сеансом. Аналогично, клиенту может быть разрешено взаимодействовать с сеансом, вводить в сеанс сервера данные пользователя, генерируемые с помощью таких устройств, как мышь или клавиатура, подключенных к клиенту. Такой сервер, который позволяет клиенту подсоединяться в «сеансе с регистрацией», иногда называется «удаленным сервером» или «дистанционным сервером». Подсистемы вычислительных устройств, которые исполняют удаленные сеансы с регистрацией и выполняют дистанционную работу с графическими данными, иногда называют «подсистемами терминальных служб».
Системы дистанционной работы с графическими данными позволяют контролировать количество графических изображений, передаваемых на клиент, при этом клиент не видит все отображаемые (то есть «выводимые») удаленным сервером данные. Степень совместного использования графических данных между сервером и клиентом удобно подразделять на три категории. При «дистанционной работе с рабочим столом (экранной интерактивной средой)» клиент видит, по существу, все, что можно было бы видеть на экране монитора, подключенного непосредственно к серверу. При «дистанционной работе в окне» клиент видит только окно или часть окна (или набор окон или частей окна), передаваемых с рабочего стола сервера, причем каждое окно обычно проецируется операционной системой сервера для вывода графических данных и/или интерфейса пользователя (UI), соответствующих одной прикладной программе. Следовательно, на сервере прикладной программе текстового редактора может принадлежать одно окно, и прикладной программе электронной почты может принадлежать другое окно, но, возможно, для совместного использования с клиентом будет выделено только окно текстового редактора. При «дистанционной работе в области» только подмножество рабочего стола сервера выделяется для совместного использования с клиентом, но такая выделенная для совместного использования область не обязательно должна соответствовать окну. Фактически, совместно используемая область может быть произвольной.
Для реализации такой удаленной работы с графическими данными требуется обеспечить возможность «работы на расстоянии» между удаленным сервером и зарегистрированным клиентом с использованием определенных средств телеметрии. С точки зрения клиента инструментальные средства на стороне сервера записывают «графические данные», то есть информацию, которая составляет визуальное содержимое рабочего стола или некоторой области рабочего стола, и передают эти графические данные обратно в клиент. Такие графические данные могут описывать генерируемые сервером текст, содержимое изображения, и/или свойства UI, например, панели прокрутки и кнопки, по которым можно выполнять щелчок мышью. Графические данные, сами по себе, могут представлять собой достаточную информацию для описанного выше режима дистанционной работы с рабочим столом, но недостаточны для дистанционной работы в режиме окна и области. Для последних типов режима дистанционной работы второе инструментальное средство на стороне сервера должно измерять геометрию (то есть форму) области, предназначенной для совместного использования, и должно передавать такую информацию о геометрии обратно в клиент. Второе инструментальное средство или еще одно третье инструментальное средство на стороне сервера также должно измерять относительное расположение области, предназначенной для совместного использования, по отношению к рабочему столу сервера (ниже называется «позицией») и передавать этот третий тип информации обратно в клиент. Таким образом, для точного отображения области рабочего стола сервера, отображаемой на его собственном дисплее, клиент должен иметь информацию о текущих графических данных, форме и позиции этой области (последние два параметра представляют собой «данные области»). Представление на клиенте данных области, то есть информации о форме и позиции, позволяет клиенту разделять рабочий стол сервера на видимые и невидимые области, то есть на область (области), в которой должны отображаться ассоциированные графические данные, и область (области), в которой ассоциированные графические данные не отображаются. Клиент затем заполняет область (области), предназначенные для отображения графических данных, или, по меньшей мере, отсекает графические данные по границе области (областей), не предназначенной для отображения.
Обычно вышеуказанные графические данные области, предназначенной для совместного использования, обнаруживают, отслеживают и/или постоянно собирают с помощью первого инструментального средства и передают в клиент независимо от информации о позиции и форме. Такое первое инструментальное средство обычно состоит из хорошо разработанных частей подсистемы обработки графических данных ядра операционной системы или в значительной степени построено на их основе, поскольку отслеживание графических данных в значительной степени аналогично отслеживанию, которое бы использовалось, если бы сервер не был удаленным сервером.
Данные области обычно собирают асинхронно с помощью второго инструментального средства, которое работает с использованием совершенно другого планировщика, чем компоненты ядра, которые постоянно собирают графические данные. Например, данные области можно собирать в режиме пользователя с помощью механизмов опроса. Кроме того, данные области передаются в клиент не синхронно с графическими данными или, другими словами, если графические данные и данные области скомбинированы в единый поток данных посредством протокола дистанционной взаимодействия, комбинирование и строгое соблюдение правил протокола дистанционного взаимодействия не позволяет исправить асинхронную природу данных области по отношению к графическим данным. (Асинхронный сбор данных области, в одном аспекте, означает, что сбор данных области выполняется независимо от сбора графических данных, то есть без учета соответствия сегмента графических данных сегменту данных области).
Принимаемые графические данные и данные области соединяются вместе клиентом для создания конечного отображения. Исторически использование этих двух инструментальных средств, в большей или меньшей степени, независимо друг от друга, с целью асинхронного сбора графических данных и данных области, вероятно, эволюционировало из-за того, что механизмы в ядрах операционных систем, предназначенные для сбора графических данных, уже были хорошо проработаны, когда начали внедрять в практику дистанционное управление, и сбор данных области был добавлен впоследствии или с опозданием. Поскольку способы асинхронного сбора данных области были разработаны с опозданием, они обычно избегают задействования ядра операционной системы, которое обеспечивает сбор графических данных.

После того, как графические данные и данные области будут асинхронно собраны для дистанционной работы в области, их обычно организуют в пакеты в соответствии с некоторым протоколом, таким как протокол удаленного рабочего стола (RDP) от MICROSOFT или протокол независимой вычислительной архитектуры (ICA) от CITRIX, и передают в клиент. (Microsoft Corporation, Redmond, Washington; Citrix Corporation, Fort Lauderdale, Florida). Протокол RDP, например, представляет собой один из множества протоколов дистанционной работы с графическими данными, то есть многие протоколы дистанционной работы с графическими данными являются в достаточной степени расширяемыми для добавления возможности дистанционной работы в области для совместного использования окна или области рабочего стола. Если в качестве компонента передачи данных для телеметрических данных дистанционного отображения используют RDP, то следует учитывать, что протокол RDP основан на стандартах семейства протоколов T.120 и представляет собой их расширение. Протокол RDP обеспечивает возможность работы с множеством каналов, что позволяет в отдельных виртуальных каналах передавать с сервера данные устройства и данные представления, а также зашифрованные данные с мыши и клавиатуры клиента.
Обычно графические данные и данные области являются десинхронизированными в их отправной точке вследствие асинхронного сбора и могут стать еще в большей степени десинхронизированными в зависимости от обработки этих данных по мере того, как они проходят через сетевые слои при передаче клиенту и приеме клиентом. Протокол RDP не исправляет отсутствие синхронизации. По аналогии с тем, как орнитолог, наблюдение которого за быстрым фазаном с помощью отличного бинокля не обеспечивает синхронность с ним (несмотря на отличное качество бинокля), удаленный клиент, который принимает десинхронизированные графические данные и данные области (несмотря на отличное качество протокола дистанционного взаимодействия), не только теряет из виду требуемое место назначения на рабочем столе сервера, но вместо этого фактически может видеть элементы на рабочем столе сервера, которые не предназначались для просмотра.
На фиг.1 показаны части системы 100 дистанционной работы с графическими данными, включая дисплей 102 сервера и дисплей 104 клиента. На дисплее 102 сервера окно 106, предназначенное для совместного использования с клиентом, отображается вместе с «запрещенными видимыми областями» секретной и частной информации 108. Если в какой-либо момент времени графические данные, описывающие содержимое окна 106, и данные области, описывающие форму и размещение окна 106, не будут синхронизированы, дисплей 104 клиента будет неправильно отображать намеченное окно 106'. Например, если окно 106' перемещается, или его перемещают слева направо по экрану дисплея 102 сервера, и графические данные и данные области не будут синхронизированы при сборе и/или передаче в клиент, тогда на дисплее 104 клиента может продолжаться отображение той области 110 рабочего стола сервера, где окно было расположено первоначально, но в которой теперь отображается секретная информация.
Такая десинхронизация приводит к двум проблемам: не отображается содержимое, которое должно быть представлено, и отображается содержимое, которое не должно быть представлено. Во-первых, на дисплее 104 клиента не показывается подмножество дисплея 102 сервера, которое предназначено для показа клиенту системой 100 дистанционной работы с графическими данными. То есть, если окно 106, предназначенное для отображения, содержит данные, необходимые для принятия деловых решений, тогда эти решения будут блокированы до тех пор, пока не будут отображены правильные данные. Во-вторых, дисплей 104 клиента может показывать, хотя и мимолетно, непредназначенную для показа секретную информацию 112, то есть подмножество дисплея 102 сервера, которое не предназначено для совместного использования с клиентом системой 100 дистанционной работы с графическими данными. Следовательно, десинхронизация представляет риск для безопасности, если «совершенно секретная» информация будет раскрыта для клиента без соответствующего разрешения.
К сожалению, проблемы синхронизации между графическими данными и данными области существуют в наиболее известных системах дистанционной работы с графическими данными, в которых клиенты часто видят не предназначенные для показа части рабочего стола сервера.
Сущность изобретения
Данные области и графические данные в системе дистанционной работы синхронно собирают и передают на удаленное устройство отображения (дисплей) при поддержании синхронности между данными области и графическими данными. В одном варианте выполнения синхронизированные данные области и синхронизированные графические данные собирают в одном драйвере дисплея. При этом для этого удаленного дисплея поступающие данные области предшествуют соответствующим синхронизированным графическим данным так, что графические данные отображаются в соответствии с синхронными данными области.
Перечень фигур чертежей
Фиг.1 - графическое представление обычно возникающей проблемы при использовании известных систем дистанционной работы с графическими данными.
Фиг.2 - блок-схема иллюстративной системы дистанционной работы с графическими данными, в которой данные области и данные графических изображений синхронизированы.
Фиг.3 - блок-схема иллюстративного средства синхронизации дистанционной работы (RSE).
Фиг.4 - графическое представление примера альтернативной методики установления совместно используемой области для иллюстративной синхронизированной дистанционной работы.
Фиг.5 - графическое представление примера структуры потока данных.
Фиг.6 - блок-схема примера системы совместного использования удаленных прикладных программ, в которой клиенту принадлежит сеанс с регистрацией и в которой обеспечивается безопасность в условиях узкой полосы пропускания.
Фиг.7 - блок-схема примера объединенной системы дистанционной работы, в которой безопасность поддерживается в условиях узкой полосы пропускания.
Фиг.8 - блок-схема примера системы дистанционной работы с мультимедиа, в которой безопасность поддерживается в условиях узкой полосы пропускания.
Фиг.9 - схема последовательности операций примера способа синхронизации данных области и данных графических изображений в системе дистанционной работы с графическими данными.
Фиг.10 - схема последовательности операций примера способа поддержания безопасности в условиях узкой полосы пропускания в примере системы дистанционной работы с графическими данными, в которой данные области и графические данные синхронизированы.
Фиг.11 - блок-схема иллюстративного вычислительного устройства, подходящего для практической реализации некоторых аспектов настоящего изобретения.
Подробное описание предпочтительного варианта осуществления
Обзор
Согласно настоящему изобретению изложена безопасная и точная дистанционная работа с графическими данными, которая обеспечивается благодаря синхронному сбору данных области и графических данных и синхронной передаче обоих этих типов данных по каналу через сервер дистанционной работы с графическими данными. Иллюстративное средство синхронизации дистанционной работы (RSE) включает в себя драйвер дисплея, который позволяет синхронно захватывать данные области и графические данные для окна или области рабочего стола сервера для дистанционного совместного использования с клиентом. («Окно» и «область» в настоящем описании в некоторой степени используются как взаимозаменяемые термины, несмотря на различия между «дистанционной работой в окне» и «дистанционной работой в области»). RSE предотвращает ввод задержек, которые могли бы десинхронизировать данные области и графические данные, и затем позволяет передавать синхронизированные данные в соответствии с протоколом дистанционного взаимодействия, при этом данные области предшествуют ассоциированным графическим данным. С точки зрения сервера, графические данные не будут отправлены клиенту, если прежде не отправлены правильным образом обновленные данные области, ассоциированные с графическими данными. С точки зрения клиента, гарантируется, что графические данные, принятые клиентом, соответствуют наиболее недавно принятым данным области.
Иллюстративная система
На фиг.2 показана иллюстративная система 200 дистанционной работы, в которой удаленный сервер («сервер») 202 соединен с возможностью обмена данными с клиентом 204 по сети 206. Дисплей 208 сервера показывает окно 210, предназначенное для совместного использования с клиентом 204 и отображения на дисплее 212 клиента. Средство синхронизации дистанционной работы («RSE») 214, включенное в сервер 202 или ассоциированное с ним, синхронно собирает графические данные и данные области, которые описывают окно 210, и передает синхронизированные графические данные и данные области в клиент 204. В некоторых вариантах выполнения клиент 204 включает в себя приемник 215 синхронизированных данных, предназначенный для приема синхронизированных данных области и ассоциированных синхронизированных графических данных и для отображения графических данных в качестве графических изображений в области 210' дисплея 212 клиента, описываемой данными области. В других вариантах выполнения не обязательно используется отдельный приемник 215 синхронизированных данных, если иллюстративное средство RSE 214 выдает синхронизированные данные, посредством которых клиент 204 может правильно отображать графические данные, обрезанные с использованием синхронизированных данных области, с применением обычных механизмов. Иллюстративное вычислительное устройство, подходящее для использования в качестве сервера 202 или клиента 204, описано ниже со ссылкой на фиг.11.
Окно 210, предназначенное для совместного использования, содержит графическое содержимое 216, включающее в себя текст «Привет!» и изображение солнца. Графическое содержимое 216 окна 210 может быть описано с помощью набора графических данных, которые должны быть синхронно собраны RSE 214. Окно 210 также содержит геометрию 218 формы и позицию 220 размещения на рабочем столе и/или на экране дисплея 208 сервера. Позиция 220 размещения иногда представляется упорядоченной парой координат по «оси X» и «оси Y», которые описывают смещение в двух измерениях от точки начала координат (0,0), в качестве которой обычно выбирают верхний левый пиксель на дисплее 208 сервера. При таком варианте выполнения геометрия 218 формы окна и позиция 220 размещения совместно описываются посредством набора данных области, которые должны быть синхронно собраны RSE 214.
Поскольку графические данные и данные области синхронизированы посредством иллюстративного RSE 214, при отображении на дисплее 212 клиента окно 210' точно воспроизводит графическое содержимое 216, геометрию 218 формы и позицию 220 размещения окна 210 в том виде, как оно отображается на дисплее 208 сервера и/или поступает с выхода сервера 202 в клиент 204. Абсолютный размер окна 210', как показано на дисплее 212 клиента, может отличаться от размера, показанного на дисплее 208 сервера, в зависимости от относительного размера дисплея 212 клиента по сравнению с размером дисплея 208 сервера.
Если иллюстративное средство RSE 214 использует протокол дистанционного взаимодействия, такой как RDP, для передачи данных области и графических данных, клиент 204 получает возможность правильного отображения графических данных, синхронизированных с областью 210', без приемника 215 синхронизированных данных. Однако в некоторых вариантах выполнения иллюстративного средства RSE 214 может не использоваться известный протокол дистанционного взаимодействия. Например, настоящее изобретение можно реализовать на практике в вычислительных и/или в мультимедийных средах, в которых не используются известные протоколы. Настоящее изобретение не ограничивается средством передачи данных, применяемым для передачи между сервером 202 и клиентом 204 синхронизированных данных области и графических данных. Таким образом, в некоторых вариантах выполнения приемник 215 синхронизированных данных 215, обычно включаемый в состав клиента 204, содержит подсистему 222 области и графическую подсистему 224. Подсистема 222 области принимает поступающие данные области, синхронизированные с графическими данными, и определяет область 210' дисплея 212 клиента на основе этих данных области. Буферы данных могут использоваться в клиенте 204 или в приемнике 215 синхронизированных данных для приема и сохранения поступающего потока синхронизированных данных. Таким образом, как данные области, так и графические данные могут сохраняться по мере приема потока данных. Графическая подсистема 224 принимает графические данные синхронно с данными области и отображает графические данные в области 210' на основе этих графических данных.
Иллюстративное средство
На фиг.3 показано более подробно иллюстративное средство RSE 214 по фиг.2. Иллюстративное средство RSE 214 собирает графические данные и ассоциированные данные области в одном месте и в одно время. В соответствии с этим модуль 300 сбора графических данных, модуль 302 сбора данных области, планировщик 304 сбора данных, тактовый генератор 306, драйвер 308 дисплея и сетевой интерфейс 310 соединены между собой с возможностью обмена данными, как показано на чертеже. Драйвер 308 дисплея может дополнительно включать в себя протокол 312 дистанционного взаимодействия, средство 314 задания последовательности вывода данных, компенсатор 316 полосы пропускания и логический блок 318 безопасности. Представленное иллюстративное средство RSE 214 является всего лишь одним примером RSE 214, которое позволяет синхронизировать графические данные и данные области для дистанционной работы в области. Другие иллюстративные средства, выполненные с возможностью реализации настоящего изобретения, могут иметь другие конфигурации.
Модуль 300 сбора графических данных синхронно собирает графические данные, которые, как описано выше, состоят из содержимого визуального изображения - текста, изображений, пиктограмм, границ, элементов управления интерфейса пользователя (UI), меню, линеек прокрутки и т.д. - области, предназначенной для совместного использования. Поскольку содержимое области обычно изменяется со временем, графические данные можно собрать через дискретные интервалы времени, сканировать непрерывно и/или передавать в виде потока. В одном варианте выполнения планировщик 304 сбора данных устанавливает временной интервал, например, 150 миллисекунд, для выполнения модулем 300 сбора графических данных циклов сбора графических данных, которые соответствуют аналогично хронированному циклу сбора данных области. Хронированный таким образом цикл представляет собой единую конструктивную характеристику синхронизации графических данных и данных области, поскольку во многих операционных системах графические данные собираются непрерывно в виде потока. При использовании некоторых технологий требуется собирать только изменение графических данных по сравнению с предыдущим циклом сбора данных, при этом не требуется собирать полный набор графических данных, начиная с нуля.

В одном варианте выполнения модуль 300 сбора графических данных представляет собой встроенную или отдельную часть драйвера 308 дисплея. То есть драйвер 308 дисплея, такой как драйвер графического дисплея WINDOWS, собирает графические данные путем сбора команд отрисовки примитивов, передаваемых из подсистемы интерфейса графических устройств (GDI) WINDOWS. Такие отрисовываемые примитивы кодируются с использованием протокола 312 дистанционного взаимодействия, такого как RDP, и посылаются по сети 206 в один или больше клиентов 204 RDP. При таком выполнении модуль 300 сбора графических данных может включать в себя или содержать библиотеку WIN32K.DLL и другие компоненты, ассоциированные с подсистемой GDI WINDOWS. В некоторых вариантах выполнения тактовый генератор 306 и/или планировщик сбора данных могут представлять собой системный тактовый генератор, или функция тактового генератора может быть реализована в операционной системе для сбора или потоковой передачи графических данных.
Данные области, подлежащие передаче в клиент 204, с использованием протокола 312 дистанционного взаимодействия, также собираются драйвером 308 дисплея через модуль 302 сбора данных области. Поскольку геометрия формы окна или области и позиция размещения обычно изменяются с течением времени, такие данные области можно собирать через дискретные интервалы, или, более идеально, их можно непрерывно сканировать и/или передавать в виде потока для обновления на клиенте 204. В одном варианте выполнения планировщик 304 сбора данных устанавливает временной интервал, например, 150 миллисекунд, для выполнения модулем 302 сбора данных области циклов сбора данных области, которые соответствуют аналогично хронированному циклу сбора соответствующих графических данных. В некоторых вариантах выполнения требуется учитывать только изменения предыдущего набора данных области, собранных во время предыдущего цикла.

В одном варианте выполнения модуль 302 сбора данных области синхронно собирает (и/или отслеживает) соответствующие данные области путем включения и/или содержания объекта окна, «WNDOBJ», создаваемого посредством набора инструментальных средств для разработки драйверов (DDK) сервера WINDOWS. WNDOBJ представляет собой объект окна на уровне драйвера, который может быть создан для содержания информации о геометрии формы и позиции размещения, то есть данных области, видимой области. Благодаря созданию объекта WNDOBJ, который соответствует области прикладной программы, предназначенной для совместного использования, драйвер 308 дисплея может отслеживать данные области, которые представляют изменения в геометрии формы и позиции размещения этой видимой области.
Пример структуры объекта WNDOBJ, позволяющей драйверу 308 дисплея отслеживать изменения данных области совместно используемой области, представлен ниже в таблице 1:
Таблица 1
<img file="00000001.tif" he="58" wi="65" img-content="undefined" img-format="tif" />
Пример структуры WNDOBJ, показанной в таблице 1, включает следующие элементы:
- coClient, который задает структуру CLIPOBJ, описывающую клиентскую область окна. Если iDComplexity представляет собой DC_RECT и левая кромка в rclBounds больше или равна правой кромке или верхняя кромка больше или равна нижней кромке, клиентская область является невидимой.
- pvConsumer, который указывает на задаваемое драйвером значение, идентифицирующее эту конкретную структуру WNDOBJ. Эта величина может быть установлена путем вызова функции WNDOBJ_vSetConsumer.
- rclClient, который задает структуру RECTL, описывающую клиентскую область окна в координатах экрана. Такой прямоугольник является исключающим снизу и справа, что означает, что нижняя и правая кромки этой области не включены.
- psoOwner, который указывает на структуру SURFOBJ, переданную в EngCreateWnd при создании этого объекта WNDOBJ.
Данные области для области, совместно используемой с клиентом 204, могут быть перечислены путем вызова функций WNDOBJ_cEnumStar и WNDOBJ_bEnum. Драйвер 308 дисплея может ассоциировать свои собственные данные с WNDOBJ путем вызова функции WNDOBJ_vSetConsumer.
В качестве синхронизирующего элемента в иллюстративном средстве RSE 214, драйвер 308 дисплея может выполнять доступ к открытым членам объекта WNDOBJ. Такие открытые члены гарантированно остаются неизменными только в контексте процедуры драйвера с обратным вызовом, предоставляемой в подсистему GDI в функции EngCreateWnd или функциях, в которых задан объект WNDOBJ.
Драйвер 308 дисплея должен использовать SURFOBJ, на который указывает psoOwner, для извлечения зависящего от конкретного драйвера состояния, соответствующего WNDOBJ, такого как дескриптор PDEV драйвера дисплея, вместо поддержки глобальных переменных.
Для установления области, предназначенной для совместного использования с клиентом 204, прикладная программа может использовать интерфейс прикладного программирования (API) WIN32 для доступа к функциональным возможностям WNDOBJ_SETUP, реализуемым драйвером 308 дисплея. Доступ предоставляется через функцию ExtEscape WIN32. Вышеуказанная подсистема GDI передает этот управляющий вызов в драйвер 308 дисплея с помощью DrvEscape, реализованного драйвером 308 дисплея с использованием WNDOBJ_SETUP для значения iEsc.
Прикладная программа, предназначенная для совместного использования между сервером 202 и клиентом 204, вызывает ExtEscape(hdc, WNDOBJ_SETUP,...) и передает дескриптор в окно, созданное прикладной программой (созданное функцией CreateWindow (создать окно) или с помощью некоторой эквивалентной функции WIN32), через входной буфер в драйвер 308 дисплея. Если драйвер 308 дисплея должен принимать собранные данные области, ассоциированные с областью, он вызывает EngCreateWnd, в контексте вызова ExtEscape, для создания структуры WNDOBJ для заданного окна. С этой точки зрения, изменения геометрии формы и изменения позиции размещения в отношении созданного прикладной программой окна, сконфигурированного таким образом, проходят до драйвера 308 дисплея.
Драйвер 308 дисплея, подходящий для вышеописанных вариантов выполнения обрабатывает вызов ExtEscape аналогично показанному в таблице 2:
Таблица 2
<img file="00000002.tif" he="151" wi="155" img-content="undefined" img-format="tif" />
Создание объекта окна задействует блокировку специальных ресурсов окна, поэтому EngCreateWnd следует вызывать только в контексте перехода WNDOBJ_SETUP в DrvEscape или DrvSetPixelFormat.
Функция EngCreateWnd даже поддерживает сбор данных области каждым из множества драйверов 308 дисплея. С помощью EngCreateWnd каждый драйвер 308 дисплея идентифицирует свою собственную процедуру с обратным вызовом, которую подсистема GDI должна вызывать для внесения изменений в соответствующую область. Эта функциональная возможность позволяет, например, драйверу 308 дисплея для отображения видеоинформации в режиме реального времени собирать данные области, соответствующие изменениям в окнах отображения видеоданных в режиме реального времени, в то время как драйвер 308 дисплея OpenGL собирает данные области, соответствующие изменениям в окнах OpenGL.
Подсистема GDI выполняет обратный вызов к драйверу 308 дисплея с самыми последними данными области, если создается новый объект WNDOBJ в DrvSetPixelFormat или ExtEscape. Подсистема GDI также выполняет обратный вызов к драйверу 308 дисплея, когда область, на которую ссылается объект WNDOBJ, будет разрушена.
Сбор данных области, представляющих изменения в форме и/или размещении области, может задействовать использование трех функций с обратным вызовом, предусмотренных для поддержки структуры объекта WNDOBJ. Область, видимая на клиенте 204, может быть перечислена путем вызова функций с обратным вызовом WNDOBJ_cEnumStart и WNDOBJbEnum. Драйвер 308 дисплея может ассоциировать свои собственные данные с объектом WNDOBJ путем вызова функции с обратным вызовом WNDOBJ_vSetConsumer.
Таким образом, в вышеописанном варианте выполнения объект WNDOBJ синхронно информирует драйвер 308 дисплея об изменениях области, видимой на клиенте 204. Поскольку в данном варианте выполнения драйвер 308 дисплея также представляет собой место, где графические примитивы синхронно собирают через интерфейсы API GDI, синхронизированные данные области и графические данные могут быть скоррелированы друг c другом (или могут поддерживаться скоррелироваными друг с другом) и переданы защищенным синхронизированным образом в клиент 204, например, вначале обновленные данные области, текущие для конца заданного временного интервала, и затем графические данные, соответствующие этим данным области. Сбор графических данных и данных области в одну точку сопряжения в иллюстративном средстве RSE 214, или более конкретно, в одну точку сопряжения в иллюстративном драйвере 308 дисплея, представляют собой один аспект, который позволяет обеспечить синхронизацию согласно настоящему изобретению. От этой точки сопряжения графические данные и данные области поддерживаются синхронизированными вплоть до доставки в клиент 204, включительно.
Область рабочего стола сервера, предназначенная для совместного использования с клиентом 204, не обязательно должна представлять собой окно прикладной программы. Существует множество способов описания области на экране дисплея, которая имеет данные области, с которыми могут быть синхронизированы графические данные. Как показано на фиг.4, на которой представлен пример способа 400 создания вручную области 402 порта просмотра, пользователь, находящийся либо на стороне сервера, либо на стороне клиента, может вручную начертить прямоугольник или другую форму на соответствующем экране дисплея (например, 208, 212), для создания, например, вычерченной вручную посредством мыши области 402 порта просмотра. Область 402 порта просмотра визуально заключает в себя все, что должно совместно использоваться с клиентом 204. Другими словами, драйвер 308 дисплея может сохранять область 402 порта просмотра как область экрана дисплея, имеющую геометрию формы и позицию размещения, то есть данные области, и отослать эти данные области перед отправкой графических данных для области 402 порта просмотра. В результате, отображаемые графические данные будут точно отсечены описанной областью 402 порта просмотра. Это представляет собой альтернативный механизм получения синхронизированных данных области по сравнению с механизмами сбора данных, представленными выше в отношении модуля 302 сбора данных области иллюстративного средства RSE 214.
Как показано на фиг.3, средство 314 задания последовательности вывода данных может направлять и отслеживать использование протокола 312 дистанционного взаимодействия для гарантии того, что данные области (например, ассоциированные с заданным интервалом, циклом или «временным срезом») будут оставаться ассоциированными с соответствующими им графическими данными. Один из способов поддержания ассоциации между соответствующими синхронизированными данными области и синхронизированными графическими данными состоит в отправке этих двух типов данных в определенном порядке, представляющем упомянутую ассоциацию, для обработки их на стороне клиента посредством клиента, который понимает как ассоциацию, так и порядок следования, который представляет эту ассоциацию. Таким образом, в одном варианте выполнения данные области всегда следуют перед соответствующими им графическими данными. Это может означать, что синхронные данные области всегда передаются в клиент 204 перед соответствующими синхронными графическими данными, но, что даже более важно, это означает, что, если соответствующие данные области будут переданы клиенту 204, то клиент 204 вначале обновляет данные области перед обработкой графических данных, соответствующих этим данным области. Таким образом, формируется надежная связь («синхронность») между данными области и графическими данными. Клиент 204 может полагаться на то, что он обрабатывает текущие данные области для любых принятых графических данных. Другими словами, клиент 204 знает о том, что любые принятые графические данные соответствуют ранее принятым данным области. Графические данные, подаваемые на дисплей 212 клиента, показываются (или «отсекаются») в соответствии с последними данными области, в результате чего обеспечивается правильно синхронизированное отображение совместно используемой области. Иллюстративное средство RSE 214, таким образом, направлено на гарантирование того, что графические данные в намеченной видимой области, предназначенной для совместного использования с клиентом 204, не будут не отображены, и графические данные, находящиеся в пределах невидимой области для клиента 204, не будут по неосторожности отображены.
Как показано на фиг.5, средство 314 задания последовательности вывода данных создает иллюстративную структуру 500 данных, обычно с использованием протокола 312 дистанционного взаимодействия, такого как RDP. Средство 314 задания последовательности вывода данных управляет использованием протокола 312 дистанционного взаимодействия для передачи данных 502 области первыми в клиент 204. Только после того, как данные 502 области будут отправлены, блок 314 задания последовательности вывода данных передает графические данные 504, синхронизированные с предшествующими данными 502 области и, поэтому, относящееся к ним. Клиент 204 может сохранять данные 502 области при приеме соответствующих графических данных 504. Таким образом, средство 314 задания последовательности вывода данных использует протокол 312 дистанционного взаимодействия для пакетирования данных 502 области и графических данных 504 в последовательность 506 пакетов данных (или модулей данных протокола (PDU)). Отдельные пакеты в последовательности 506 могут поступать в случайном порядке и в отсутствие порядка в клиент 204, но пакеты обычно содержат порядковый номер в их соответствующих заголовках для повторной сборки правильной последовательности 506 пакетов данных. Следовательно, даже если данные 502 области не будут в действительности приняты первыми клиентом 204, последовательность 506 может быть повторно восстановлена, поскольку клиент 204 буферизует поступающие пакеты так, что с точки зрения клиента данные 502 области следуют первыми, и модифицирует отображение соответствующих им синхронизированных графических данных 504.
Что касается версий RDP, согласно настоящему изобретению создается альтернативный вторичный PDU RDP, который пакетирует данные 502 области для заданного обновления данных области, временного среза и/или итерации, до пакетирования графических данных 504. Если первый пакет 508 имеет недостаточную емкость для текущих данных 502 области, тогда остающиеся данные 502 области будут отправлены в следующем пакете 510. Аналогично, графические данные 504 следуют за данными 502 области и заполняют пакеты (например, 512) по мере необходимости для отправки текущих синхронизированных графических данных 504, ассоциированных с текущим набором данных 502 области.
Если данные 502 области не изменяются, то есть не изменяются в течение множества последовательных временных срезов, тогда последовательные данные 502 области не обязательно пересылать в клиент 204 до тех пор, пока данные 502 области не изменятся снова, и последовательные пересылаемые в клиент 204 графические данные 504 просто соответствуют наиболее недавно отправленным и принятым данным 502 области.
Как указано выше, данные 502 области обычно включают в себя описание геометрии формы совместно используемой области, а также позицию размещения совместно используемой области на рабочем столе. Описание геометрии формы состоит из закодированной коллекции прямоугольников, которые аппроксимируют форму совместно используемой области. (Пиксельные дисплеи обычно представляют изображения в виде набора прямоугольников). Средство 314 задания последовательности вывода данных может устанавливать максимальное количество прямоугольников, подлежащих использованию для описания формы совместно используемой области. При превышении максимального количества средство 314 задания последовательности вывода данных может вызвать компенсатор 316 полосы пропускания и логический блок 318 безопасности для уменьшения объема данных 502 области без риска для безопасности, особенно если полоса пропускания передачи в клиент ограничена. Например, совместно используемое окно прикладной программы текстового редактора может быть описано с помощью одного простого прямоугольника. Когда окно меню прикладной программы, которая не используется совместно, открывается в середине (и поверх) совместно используемого окна прикладной программы текстового редактора, форма окна текстового редактора, которая должна описываться данными 502 области, будет представлена в виде сложной формы бублика. Теперь вместо одного простого прямоугольника для описания окна текстового редактора требуется использовать множество прямоугольников, для чего требуется больший объем данных 502 области. Окна или области совместного использования могут быть очень сложными и для их описания может потребоваться большой объем данных области. Например, для описания окна, состоящего из картинки популярного кинофильма, которая включает в себя сети и перья, требуется приблизительно 10000 прямоугольников. Защищенные решения для непрерывной дистанционной работы в условиях ограничения полосы пропускания вследствие сложной формы окна совместного использования, описаны далее со ссылкой на фиг.6-8.
Для передачи компонента позиции размещения на рабочем столе данных области обычно требуется более узкая полоса пропускания, чем для передачи геометрии формы совместно используемой области. Позиция совместно используемой области может быть эффективно описана координатами смещения верхней крайней левой части совместно используемой области от точки начала координат (0, 0) на экране дисплея, например, (0, 0) в качестве верхнего крайнего левого пикселя. Кроме того, если совместно используемая область представляет собой простой прямоугольник, тогда два набора координат смещения, описывающих верхний крайний левый угол совместно используемого окна, и нижний крайний правый угол совместно используемого окна, по существу, описывают как позицию размещения, так и геометрию формы прямоугольника.
Последовательности данных (например, 506), задаваемые блоком 314 задания последовательности вывода данных, включая последовательности 506, которые реализуют примерную методику, в соответствии которой перед графическими данными 504 следуют синхронизированные данные 502 области, обычно не требуют существенно большей полосы пропускания, чем обычные последовательности данных, состоящие из обычных PDU дистанционного взаимодействия. RDP, фактически, содержит свой собственный механизм сжатия объема. Данные 502 области могут включать 64 бита, выделенных на каждый прямоугольник для описания геометрии формы, и 32 дополнительных бита, выделенных для каждой описываемой области. Таким образом, требуется 96 битов, если область содержит один прямоугольник, 160 битов, если область содержит два прямоугольника, и т.д. Данные такого типа, описывающие прямоугольники, могут быть в значительной степени сжаты до уровня от приблизительно 50% до приблизительно 90%, поскольку прямоугольники обычно являются регулируемыми, и доступны алгоритмы кодирования, которые можно адаптировать для уменьшения количества битов, требуемых для передачи синхронизированных данных 502 области и синхронизированных графических данных 504 в клиент.
RDP содержит множество существовавших ранее правил. Согласно описываемому здесь настоящему изобретению добавляется правило, состоящее в том, что графические данные 504 не передаются перед ассоциированными с ними синхронизированными данными 502 области или, в одном варианте выполнения, если графические данные 504 отправлены перед ассоциированными синхронизированными данными 502 области, тогда для этих графических данных 504 предписывается, что они не будут обрабатываться до данных 502 области. Это правило не исключает возможность передачи информации 514 других типов, поступающей между или вперемежку с синхронизированными данными 502 области и синхронизированными графическими данными 504, например, данных позиции указателя мыши (которые могут быть включены в пакет даже перед данными 502 области); данных управления конференцией; данных качества обслуживания (QoS) и т.д. Эти другие типы вспомогательных данных могут быть вкраплены перед, после и/или между синхронизированными данными 502 области, за которыми следуют ассоциированные графические данные 504.

Повторим, что иллюстративное средство RSE 214 синхронно собирает как данные 502 области, так и графические данные 504, в одну точку сопряжения, без потери синхронности данных. Независимо от того, используется ли WNDOBJ для сбора данных области окна, или используется драйвер графического дисплея WINDOWS для сбора графических данных, если только иллюстративное средство RSE 214 собирает данные 502 области и графические данные 504 синхронно, можно использовать настоящее изобретение. Как указано выше, протокол RDP представляет собой только один из множества протоколов дистанционной работы с графическими данными, которые являются в достаточной степени расширяемыми для обеспечения возможности добавления дистанционной работы в области и, таким образом, их можно использовать для практической реализации описанного здесь настоящего изобретения.
В одном варианте выполнения компенсатор 316 полосы пропускания может оказывать влияние на формирование последовательности данных, выполняемое средством 314 задания последовательности вывода данных. В некоторых обстоятельствах полоса пропускания для передачи пакетов данных клиенту 204 временно может оказаться недостаточной. Компенсатор 316 полосы пропускания принимает решение в отношении того, как обрабатывать недостаточную полосу пропускания, в некоторых реализациях на основе логического блока 318 безопасности. Логический блок 318 безопасности включает в себя меры безопасности и различные протоколы безопасности для различных сценариев.
Вариант реализации безопасности
Иллюстративное средство RSE 214 можно использовать для многих типов прикладных программ и сценариев. Тип прикладной программы может определять конкретные меры безопасности, используемые в условиях узкой полосы пропускания. То, как иллюстративное средство RSE 214 поддерживает синхронность графических данных и данные области в условиях узкой полосы пропускания, зависит от прикладной программы и уровня безопасности, требуемого и/или соответствующего для прикладной программы. Условие узкой полосы пропускания может возникнуть, когда объем данных области и/или графических данных становится больше, чем фактически доступная полоса пропускания. Например, совместно используемое в удаленном режиме окно текстового редактора обычно содержит больше текущих графических данных вследствие текущего ввода текста, чем данных области, требуемых для поддержания неподвижного прямоугольного окна. Совместно используемые в удаленном режиме окна браузера Интернет, в которых постоянно изменяются подвижные изображения, содержат графические данные, которые обычно сильно превышают по объему данные области, требуемые для описания окна, совместно используемого в удаленном режиме. Прикладная программа, которая одновременно содержит сложную графику и сложную форму, может превысить полосу пропускания, требуемую для поддержания синхронизированной удаленной передачи графических данных и данных области. Для иллюстративного средства RSE 214 ниже описаны три различных типа 600, 700, 800 среды прикладной программы для иллюстрации способов, с помощью которых иллюстративное средство RSE 214 может реагировать на условия узкой полосы пропускания.
На фиг.6 показана среда 600 совместного использования удаленных прикладных программ, в которой клиент 602 использует мандат (учетную запись с параметрами доступа пользователя) 604 регистрации для осуществления доступа к удаленному серверу 606 по сети 608. В такой среде 600 может возникнуть условие узкой полосы пропускания, при котором не хватает пропускной способности сети для передачи всех синхронизированных данных области и графических данных, которые потребовались бы для дистанционной работы в окне или в области, или превышены другие внутренние нормативы, в результате чего возникли условия ограничения полосы пропускания. Узкая полоса пропускания может возникнуть из-за того, что форма совместно используемого окна стала слишком сложной (например, содержит слишком много прямоугольников), для описания в данных области с использованием доступной полосы пропускания.
Когда средство 314 задания последовательности вывода данных больше не может продолжать передачу всех синхронизированных данных области и после них ассоциированных графических данных из-за ограничений полосы пропускания, логический блок 318 безопасности, ассоциированный со средой 600 совместного использования удаленных прикладных программ, может передать в компенсатор 316 полосы пропускания команду на изменение способа передачи данных или изменение самих данных.
В одном сценарии средство 314 задания последовательности вывода данных посылает данные области и графические данные так, как если бы отсутствовали ограничения полосы пропускания, только медленнее. Решение такого типа, включенное в логический блок 318 безопасности, может привести к тому, что на дисплее клиента находящееся в совместно используемое окно зависнет или застынет, по меньшей мере, временно, до расширения полосы пропускания или до тех пор, пока «одноразовые» сложные данные области не будут приняты и после этого будут оставаться относительно неизменными (окно со сложной формой не будет перемещаться по экрану).
Альтернативный вариант решения для примера среды 600 совместного использования удаленных прикладных программ приводит к отказу от дистанционной работы в области и к переключению, по меньшей мере, временно, в режим дистанционной работы с рабочим столом. При дистанционной работе с рабочим столом клиенту 602 показывается больше информации, чем намечено в среде 600 совместного использования удаленных прикладных программ, но поскольку клиенту 602 «принадлежит» весь сеанс 610 в соответствии с мандатом 604 регистрации и дистанционная работа в области имеет место только для улучшения работы, утечка данных, влияющая на безопасность, не происходит в случае, когда для клиента 602 будет показано большее подмножество ограниченного пространства информации, чем разрешено видеть клиенту. Таким образом, компенсатор 316 полосы пропускания, когда он сталкиваются с проблемой недостаточности полосы пропускания для выполнения дистанционной работы в области в среде 600 совместного использования удаленных прикладных программ, может переключить систему на дистанционную работу с рабочим столом, временно отказываясь, таким образом, от данных области и необходимости синхронизации.
На фиг.7 показана «объединенная» среда 700 многосторонней конференции, в которой множество клиентов, таких как первый клиент 702, второй клиент 704, ... и «n-ый» клиент 706 подключены с возможностью обмена данными через сеть 708 к удаленному серверу 710, который включает в себя иллюстративное средство RSE 214. При дистанционной работе в области отображается подмножество рабочего стола сервера одновременно на каждом клиенте, например, когда выбран вариант «отображения только примечаний по встрече». Каждый клиент может посылать входную информацию для воздействия на окно 714 или совместно используемую область. Например, если первый клиент 702 перемещает с использованием мыши по своему экрану дисплея окно 714, которое совместно используется, тогда окно 714 также будет перемещаться по экранам дисплеев всех других клиентов. Аналогично, если на «n-ом» клиенте 706 осуществляется нажатие кнопки в окне 714 или совместно используемой области, то действие, предпринимаемое на сервере при нажатии кнопки, будет распространяться на все клиенты 702, 704, ..., 706.
В такой объединенной среде 700 ни один из клиентов не владеет сеансом. Поэтому представление для любого из клиентов более одного совместно используемого окна 714 или области представляет риск в отношении безопасности (как показано на фиг.1). В известных системах, когда один из клиентов непреднамеренно перемещает совместно используемое окно 714 по окну другой прикладной программы, которая не используется совместно, на рабочем столе сервера, мелькание окна, которое не используется совместно, часто видимо в течение короткого времени на каждом из экранов дисплеев клиентов из-за отсутствия синхронизации между данными области и графическими данными.
В условиях относительно узкой полосы пропускания, например, когда данные области становятся слишком сложными из-за необычной формы окна 714 или совместно используемой области, либо когда качество услуг сети резко ухудшается, компенсатор 316 полосы пропускания может принять решение в отношении того, как средство 314 задания последовательности вывода данных должно продолжать отправку данных области и графических данных в объединенной среде 700. Поскольку клиенты могут не иметь разрешения на просмотр всего рабочего стола сервера, переключение в режим дистанционной работы с рабочим столом для уменьшения объема данных области не включено в качестве опции в логический блок 318 безопасности для объединенной среды 700. Если иллюстративное средство RSE 214 может показывать подмножество совместно используемой области, что существенно уменьшило бы объем данных области в условиях ограничения полосы пропускания, такое решение можно выбрать в качестве опции логического блока 318 безопасности. Драйвер 308 дисплея в RSE 214 при этом вписывает меньшую область 716 с более простой формой, например простой прямоугольник, в границы слишком сложной совместно используемой области 714. Это может существенно уменьшить объем данных области, если меньшее количество прямоугольников требуется для описания новой вписанной формы, но может также обрезать некоторую часть совместно используемой области. Например, часть текста и изображений, а также пиктограммы и кнопки, по которым можно выполнить щелчок мышью, раскрывающиеся меню и полосы прокрутки могут быть вырезаны из видимой области при отображении области 716 меньших размеров. Хотя такой вариант приводит к, вероятно, временному нежелательному неудобству при работе (проблема возможности использования), при этом поддерживается безопасность, поскольку иллюстративное средство RSE 214 надежно гарантирует, что не разрешенная часть рабочего стола сервера не будет отображаться для клиентов 702, 704, ..., 706.
На фиг.8 показана мультимедийная среда 800, в которой иллюстративное средство RSE 214, включенное в состав удаленного сервера или ассоциированное с мультимедийным концентратором 802, используется для передачи мультимедийного потока 804 (например, из хранилища 806 мультимедийных данных), для отображения на клиенте 808. В этом случае клиент 808 может представлять собой вычислительное устройство или телевизионную приставку, которая осуществляет управление дисплеем 810 клиента. В одном сценарии сам мультимедийный поток 804 может быть передан по внеполосному каналу вне протокола 312 дистанционного взаимодействия, такого как RDP, и вне протоколов терминальных служб и т.д.
В варианте применения такого типа иллюстративное средство RSE 214 обеспечивает для клиента 808 способ декодирования мультимедийного потока 804 и воспроизводит его «поверх» используемого протокола 312 дистанционного взаимодействия и/или протокола терминальных служб, то есть мультимедийный поток 804 воспроизводится в клиенте 808, который использует протокол 312 дистанционного взаимодействия и/или протокол терминальных служб, но сам мультимедийный поток 804 не передается посредством протокола 312 дистанционного взаимодействия и/или протокола терминальных служб. Иллюстративное средство RSE 214 управляет данными области в отношении формы и позиции размещения на рабочем столе клиента окна 812 или области для воспроизведения мультимедийного потока 804, информируя таким образом клиент 808 о том, где отображать мультимедийный поток 804, поступающий, например, по внеполосному каналу.
В качестве реакции на сценарий узкой полосы пропускания в мультимедийной среде 800, причиной которого послужила, например, сложная форма окна 812, увеличивающая объем данных области, логический блок 318 безопасности может включать в себя меры, позволяющие компенсатору 316 полосы пропускания выбрать более простую форму окна 812 отображения мультимедийного потока. Более простая форма уменьшает объем данных области. В этом случае, если предположить, что безопасность не подвергается значительному риску в мультимедийной среде 800 (например, если мультимедийная среда 800 представляет собой всего лишь домашнюю мультимедийную сеть), иллюстративное средство RSE 214 позволяет ограничивать исходное сложное окно 812, для описания которого требуется слишком большой объем данных области, новым более простым окном 814, которое имеет большие размеры, чем исходное окно 812. Новое имеющее большие размеры окно 814 не представляет собой большую часть рабочего стола сервера, которая может содержать секретную информацию, а всего лишь увеличенный порт просмотра, через который будет представлена увеличенная версия мультимедийного потока 804, то есть размер визуального «отпечатка» мультимедийного потока 804 будет изменен так, чтобы он соответствовал окну с большими размерами. Такое окно 814 с большими размерами предотвращает обрезание мультимедийного содержимого (например, потери части кинофильма), которое произошло бы в случае, если бы было выбрано окно с меньшими размерами, чем исходное сложное окно 812, для решения проблемы сложной формы окна. Однако такое окно 814 с большими размерами может обрезать или полностью заслонять некоторые из представленных на экране элементов управления интерфейса 816 пользователя, предназначенные для управления мультимедийным потоком 804. Хотя это приводит к нежелательным неудобствам при работе, поскольку части экрана дисплея клиента будут закрыты более крупным окном мультимедийного потока, такое решение ситуации узкой полосы пропускания, возможно, приводит только к проблемам, связанным с неудобством использования, которые, можно надеяться, будут временными. При этом не нарушается безопасность в мультимедийной среде 800 в результате применения меры по обеспечению безопасности для условий узкой полосы пропускания.
Примеры способов
На фиг.9 показан иллюстративный способ 900 синхронизации данных области и графических данных для системы дистанционный работы с графическими данными. Этот пример способа 900 может быть выполнен с помощью устройства, такого как иллюстративное средство RSE 214, показанное на фиг.2 и 3. На схеме последовательности операций эти операции представлены в виде отдельных этапов. Представленные операции могут быть выполнены посредством аппаратных средств и/или в форме машиночитаемых инструкций (программных или встроенных программных средств), которые могут исполняться процессором.
На этапе 902 синхронно собирают данные области для дистанционного отображения на экране клиента области рабочего стола сервера. Данные области могут описывать геометрию области, такую как форма и позиция области на рабочем столе сервера и/или позиция, которую может эта область занимать на рабочем столе клиента.
На этапе 904 синхронно собирают графические данные для упомянутой области. Графические данные описывают визуальное содержимое, которое будет отображаться в области, когда область будет реализована на клиенте. Или, с другой точки зрения, данные области отсекают графические данные до геометрии (формы и позиция), задаваемой данными области.
На этапе 906 данные области и графические данные передают в клиент при поддержании синхронности между данными области и графическими данными. Поддержание синхронности может включать в себя избежание дополнительных задержек при обработке различных потоков данных, каждый из которых представляет данные области и графические данные; надлежащее использование протоколов дистанционного взаимодействия для передачи синхронизированных данных; организацию последовательности из заданного объекта данных области с ассоциированными графическими данными, так чтобы клиент мог сопоставлять графические данные с ассоциированными данными области и т.д.
На фиг.10 показан пример способа 1000 поддержания безопасности частной информации при синхронизации данных области и графических данных для системы дистанционной работы с графическими данными, в условиях узкой полосы пропускания, например, временного состояния узкой полосы пропускания передачи между сервером 202 и клиентом 204. Пример способа 1000 может быть выполнен посредством устройства, такого как иллюстративное средство RSE 214, показанное на фиг.2 и 3. На схеме последовательности операций эти операции показаны в виде отдельных этапов. Операции могут выполняться посредством аппаратных средств и/или в виде машиночитаемых инструкций (программных или встроенных программных средств), которые могут исполняться процессором.
На этапе 1002 синхронно собирают данные области и графические данные.
На этапе 1004 в примере способа 1000 посылают запрос в отношении того, достаточна ли полоса пропускания для передачи синхронизированных данных области и графических данных, например, в пределах ограничений по времени, определяемых протоколом 312 дистанционного взаимодействия. Если полоса пропускания недостаточна, в примере способа 1000 происходит ответвление на этап 1008. Если полоса пропускания достаточна, в примере способа 1000 происходит ответвление на этап 1006.
На этапе 1006 синхронизированные данные области и синхронизированные графические данные передают в клиент.
На этапе 1008 в примере способа 1000 выполняется запрос в отношении того, принадлежит ли клиенту весь сеанс. Если клиенту принадлежит весь сеанс, тогда в примере способа происходит ответвление на этап 1010. Если клиенту не принадлежит весь сеанс, тогда в примере способа происходит ответвление на этап 1012.
На этапе 1010 графические данные для всего рабочего стола сервера передают в клиент, а данные области не передают.
На этапе 1012 в примере способа 1000 выполняется запрос в отношении того, может ли визуальное содержимое совместно используемой области быть обрезано. Если визуальное содержимое совместно используемой области может быть обрезано, тогда в примере способа 1000 выполняется ответвление на этапы 1014 и 1016. Если визуальное содержимое совместно используемой области не может быть обрезано, тогда в примере способа 1000 выполняется ответвление на этапы 1018, 1020 и 1022.
На этапе 1014 выбирают более простую новую в совместно используемую область с меньшими размерами, которая вписана в исходную совместно используемую область.
На этапе 1016 синхронизированные данные области и синхронизированные графические данные для этой новой области передают в клиент.
С другой стороны, на этапе 1018 выбирают более простую новую совместно используемую область с большими размерами, которая ограничивает исходную совместно используемую область.
На этапе 1020 синхронизированные данные области и синхронизированные графические данные для этой новой области передают в клиент.
На этапе 1022 размер визуального содержимого для исходной совместно используемой области может быть изменен для соответствия новой совместно используемой области с большими размерами. Однако графические данные рабочего стола сервера не используются для заполнения частей нового окна с большими размерами, которые находятся за пределами исходной совместно используемой области, поскольку это могло бы нарушить свойства безопасности примера способа 1000. Этот вариант, обеспечиваемый этапами 1018, 1020 и 1022, полезен, когда графические данные представляют собой данные из источника, который является внешним по отношению к серверу, например мультимедийный поток, поступающий из цифрового хранилища.
Пример вычислительного устройства
На фиг.11 показан пример вычислительного устройства 1100, которое можно использовать в качестве среды для практической реализации аспектов настоящего изобретения, например, в качестве удаленного сервера 202, вмещающего иллюстративное средство RSE 214, или в качестве клиента 204. Компоненты вычислительного устройства 1100 могут включать в себя, но не в ограничительном смысле, процессор 1120, системную память 1130 и системную шину 1121, которая соединяет различные системные компоненты, включая системную память 1130, с процессором 1120. Системная шина 1121 может быть представлена одним из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину и локальную шину с использованием любой из множества архитектур шины. В качестве примера и не для ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (МКА, MSA), расширенную шину ISA (EISA), локальную шину Ассоциации по стандартизации в области видеотехники и микроэлектроники (VESA) и шину взаимного соединения периферийных компонентов (PCI), также известную, как мезонинная шина.
Иллюстративное вычислительное устройство 1100 обычно включает в себя различные носители информации, считываемые вычислительным устройством. Носители информации, считываемые вычислительным устройством, могут представлять собой любые доступные носители информации, к которым вычислительное устройство 1100 может осуществить доступ, и включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители. В качестве примера, но не ограничения, носители информации, считываемые вычислительным устройством, могут содержать носители информации вычислительного устройства и среды передачи данных. Носители информации вычислительного устройства включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные с использованием любого способа или технологии и предназначенные для хранения информации, такой как инструкции, считываемые вычислительным устройством, структуры данных, программные модули или другие данные. Носители информации вычислительного устройства включают в себя, но не в ограничительном смысле, ПЗУ, ОЗУ, электрически стираемое перепрограммируемое ПЗУ (EEPROM), флэш-память или память другой технологии, ПЗУ на компакт-диске (CD-ROM), цифровые универсальные диски (DVD) или другие оптические дисковые накопители, магнитные кассеты, магнитную ленту, магнитные дисковые накопители или другие магнитные носители информации, или любой другой носитель, который можно использовать для хранения требуемой информации, к которому вычислительное устройство 1100 может осуществить доступ. Среды передачи данных обычно воплощают инструкции, считываемые вычислительным устройством, структуры данных, программные модули или другие данные в виде сигнала, модулированного данными, такого как сигнал несущей или другой транспортный механизм, и включают любую среду передачи информации. Термин «сигнал, модулированный данными», означает сигнал, одна или больше характеристик которого установлены или изменены таким образом, что обеспечивается кодирование информации в этом сигнале. В качестве примера и без ограничений, среды передачи данных включают в себя кабельные среды, такие как кабельная сеть или непосредственное кабельное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых вышеуказанных сред и носителей также охватываются понятием «носитель информации, считываемый вычислительным устройством».
Системная память 1130 включает в себя носители информации вычислительного устройства в форме энергозависимой и/или энергонезависимой памяти устройства, например постоянное запоминающее устройство (ПЗУ) 1131 и оперативное запоминающее устройство (ОЗУ) 1132. Базовая система 1133 ввода-вывода (BIOS), содержащая базовые процедуры, которые позволяют передавать информацию между элементами вычислительного устройства 1100, например, во время запуска, обычно хранится в ПЗУ 1131. ОЗУ 1132 обычно содержит данные и/или программные модули, которые оперативно доступны процессору 1120, и/или данные, обрабатываемые в данный момент процессором 1120. В качестве примера, и без ограничений, на фиг.11 представлена операционная система 1134, прикладные программы 1135, другие программные модули 1136 и данные 1137 программ. Хотя иллюстративное средство RSE 214 представлено как программное средство в оперативном запоминающем устройстве 1132, другие варианты выполнения иллюстративного средства RSE 214 могут быть представлены в виде аппаратных средств или в виде комбинации программных и аппаратных средств.
Иллюстративное вычислительное устройство 1100 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые носители информации вычислительного устройства. Только в качестве примера, на фиг.11 представлен накопитель 1141 на жестких магнитных дисках, который считывает с несъемного энергонезависимого магнитного носителя информации или записывает на него, магнитный дисковод 1151, который считывает со съемного энергонезависимого магнитного диска 1152 или записывает на него, и оптический дисковод 1155, который считывает со съемного энергонезависимого оптического диска 1156, такого как CD ROM или другой оптический носитель, или записывает на него. Другие съемные/несъемные, энергозависимые/энергонезависимые носители информации вычислительного устройства, которые можно использовать в иллюстративной рабочей среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Накопитель 1141 на жестких магнитных дисках обычно подключен к системной шине 1121 через интерфейс несъемного запоминающего устройства, такой как интерфейс 1140, а магнитный дисковод 1151 и оптический дисковод 1155 обычно подключены к системной шине 1121 через интерфейс съемного запоминающего устройства, такой как интерфейс 1150.
Накопители и дисководы и ассоциированные с ними носители информации вычислительного устройства, описанные выше и представленные на фиг.11, обеспечивают хранение инструкций, считываемых вычислительным устройством, структур данных, программных модулей и других данных для вычислительного устройства 1100. На фиг.11, например, накопитель 1141 на жестких магнитных дисках представлен как хранящий операционную систему 1144, прикладные программы 1145, другие программные модули 1146 и данные 1147 программ. Следует отметить, что эти компоненты могут быть теми же или могут отличаться от операционной системы 1134, прикладных программ 1135, других программных модулей 1136 и данных 1137 программ. Операционная система 1144, прикладные программы 1145, другие программные модули 1146 и программные данные 1147 обозначены отличающимися ссылочными позициями здесь для иллюстрации того, что, как минимум, они представляют собой другие копии. Пользователь может вводить команды и информацию в иллюстративное вычислительное устройство 1100 через устройства ввода информации, такие как клавиатура 1148 и координатно-указательное устройство 1161, обычно известное как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода информации (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или тому подобные. Эти и другие устройства ввода информации часто подключены к процессору 1120 через интерфейс 1160 пользовательского ввода, который подключен к системной шине, но могут быть подключены через другие структуры интерфейсов и шин, такие как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 1162 или устройство отображения другого типа также подключено к системной шине 1121 через интерфейс, такой как видеоинтерфейс 1190. Кроме монитора 1162 вычислительные устройства могут также включать в себя другие периферийные выходные устройства, такие как громкоговорители 1197 и принтер 1196, которые могут быть подключены через выходной периферийный интерфейс 1195.
Иллюстративное вычислительное устройство 1100 может работать в сетевой среде с использованием логических соединений с одним или больше удаленными вычислительными устройствами, такими как удаленное вычислительное устройство 1180. Удаленное вычислительное устройство 1180 может представлять собой персональное вычислительное устройство, сервер, маршрутизатор, сетевой ПК, одноранговое сетевое устройство или другой общий сетевой узел, и обычно включает в себя многие или все из элементов, описанных выше в отношении вычислительного устройства 1100, хотя на фиг.11 представлено только запоминающее устройство 1181. Логические соединения, представленные на фиг.11, включают в себя локальную сеть (LAN) 1171 и глобальную сеть (WAN) 1173, но также могут включать другие сети. Такие сетевые среды, как правило, применяются в компьютерных сетях в офисах, на предприятиях и могут быть представлены сетями Интранет (внутрикорпоративная сеть) и Интернет.
При использовании в сетевой среде LAN иллюстративное вычислительное устройство 1100 может быть подключено к LAN 1171 через сетевой интерфейс или адаптер 1170. При использовании в сетевой среде WAN иллюстративное вычислительное устройство 1100 обычно содержит модем 1172 или другие средства установления связи через WAN 1173, такую как Интернет. Модем 1172, который может быть внутренним или внешним, может быть подключен к системной шине 1121 через интерфейс 1160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, обозначенные относительно вычислительного устройства 1100, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера, и не для ограничения, на фиг.11 представлены удаленные прикладные программы 1185 как находящиеся в запоминающем устройстве 1181. Следует понимать, что показанные сетевые соединения представляют собой только пример, и могут использоваться другие средства установления линии связи между вычислительными устройствами.
Заключение
Следует отметить, что описанное выше настоящее изобретение может быть выполнено в виде аппаратных средств, в виде программных средств или в виде аппаратных и программных средств одновременно. В определенных вариантах выполнения иллюстративные система, средство и связанные с ними способы могут быть описаны в общем контексте инструкций, исполняемых вычислительным устройством, таких как программные модули, исполняемые телевизионной приставкой и/или вычислительным устройством. Обычно программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или воплощают определенные абстрактные типы данных. Настоящее изобретение также можно реализовать на практике в распределенных средах связи, в которых задачи выполняются посредством беспроводной связи, осуществляемой устройствами обработки данных, которые связаны через сеть связи. В беспроводной сети программные модули могут быть расположены на носителях информации как локальных, так и удаленных устройств связи, включая запоминающие устройства.
В приведенном выше описании представлены примеры систем и способов синхронизации данных области и графических данных для систем дистанционной работы с графическими данными. Хотя настоящее изобретение описано с использованием терминов, специфических для структурных признаков и/или методологических действий, следует понимать, что объем настоящего изобретения, определенный в прилагаемой формуле изобретения, не обязательно ограничивается конкретными описанными признаками или действиями. Скорее, конкретные признаки и действия раскрыты как примеры форм воплощения формулы изобретения.