СИСТЕМА И СПОСОБ ПРОЕЦИРОВАНИЯ ДАННЫХ ОТ ОДНОГО КО МНОГИМ
ONE-TO-MANY DATA PROJECTION SYSTEM AND METHOD

Область техники, к которой относится изобретение
Настоящее изобретение относится, в целом, к представлениям информации и, в частности, к системе и способу проецирования информации от одного презентатора на множественных посетителей и проекционные устройства.
Уровень техники
Несмотря на технологический прогресс последних лет, многие традиционные действия, связанные с бизнесом, все еще занимают существенное место на современных рабочих местах. Одним из таких действий является проведение встреч или конференций. Нередко в ходе такого совместного мероприятия одному участнику приходится представлять материал нескольким другим участникам. Традиционное средство представления информации включает в себя проецирование на экран, отображение на мониторе или ином оптически активном устройстве или представление в виде документальной копии, например, на белой доске, черной доске или проекционном экране. Хотя каждый из этих методов имеет свои достоинства и недостатки в отношении стоимости, сложности и эффективности, проецирование и отображение обычно наиболее пригодно для быстро изменяющихся данных, например, представляемых посредством слайдов или видео. Кроме того, проецирование и отображение идеально подходят для совместного использования информации с экрана компьютера или другого вычислительного устройства, например, в процессе представления слайдов посредством PowerPoint торговой марки Майкрософт.
К сожалению, для пользователей и участников проекционной технологии традиционные механизмы проецирования и отображения информации с вычислительного устройства, несмотря на высокую эффективность в действии, нередко весьма сложны в подготовке, требуют подключения шнуров, например кабелей VGA, и регулировки различных параметров. Эта сложность может создавать трудности до и в процессе представления и часто приводит к задержкам начала представления. Кроме того, такие механизмы не позволяют просто и быстро передавать управление представлением от одного выступающего другому. Так, например, если первый выступающий использует ПК для представления слайд-шоу PowerPoint и желает передать слово второму выступающему, то второму выступающему обычно приходится физически вставать со стула и занимать место первого выступающего перед ПК, что создает перерыв, задержку и отвлечение для других участников.
Еще одна проблема связана с защитой информации, представляемой на такой встрече. В частности, когда посетитель физически находится в помещении или способен наблюдать за происходящим в помещении, где проводится представление, не существует возможности ограничить возможность этого лица видеть представляемую информацию. Хотя можно использовать физические способы препятствования первоначальному доступу в физическое место представления, такие способы не обеспечивают безопасность, когда в одном и том же месте проводится несколько представлений, что рассматривалось выше. Таким образом, если человек находится в месте представления, он может наблюдать все представления, проводимые в этом месте.
Чтобы разрешить эту проблему, во многих местах для семинаров используют несколько разных, меньшего размера мест или помещений для представления. Таким образом, можно более тщательно проверять лиц, допущенных к каждому представлению. Однако, несмотря на решение вопросов безопасности для презентаторов, это создает трудности для посетителей на этих представлениях. Посетителям приходится физически переходить с места на место, чтобы видеть разные представления, собирать и разбирать свои материалы на каждом месте. Кроме того, посетители с физическими недостатками могут пропустить начало представления или им придется уходить с представления раньше, чтобы перейти в другое помещение. Дополнительный материал может быть пропущен, поскольку посетители могут ошибиться комнатой или не найти место того или иного представления.
Поэтому имеется необходимость в системе и способе проецирования информации от одного к многим (1:М), которые удовлетворяют требованиям и желаниям как презентатора, так и посетителя, обеспечивают безопасность для презентаторов и позволяют управлять информацией, совместно используемой во время представления.
Раскрытие изобретения
Настоящее изобретение предусматривает новые и усовершенствованные систему и способ отображения информации для множественных посетителей. В частности, настоящее изобретение предусматривает новые и усовершенствованные систему и способ доставки представления множественным посетителям. Предпочтительно, представление можно отображать на проекторе и/или устройствах отображения множественных посетителей. Представление может быть открытым или может требовать осуществления защитной аутентификации для допуска посетителя к просмотру представления.
Согласно предпочтительному варианту осуществления настоящего изобретения представление и посетители отвечают стандарту "Universal Plug and Play", что позволяет обнаруживать их в сети. Соединения производятся посредством сеанса обслуживания терминалов. С точки зрения презентатора, обнаружение проекторов и посетителей позволяет контролировать, для кого и что допускается к представлению. Для этого можно требовать приглашение, сгенерированное презентатором, которое обеспечивает допуск на представление. Для усиления защиты можно также требовать пароль. Презентатор может также указать, что представление открытое, и может автоматически генерировать приглашения для любого посетителя, запрашивающего допуск на представление. С точки зрения посетителей, они могут найти имеющиеся представления, осуществляя поиск устройства представления в сети. Затем они могут выбрать, какие представления они хотят увидеть, и запросить допуск к ним. Когда презентатор хочет остановить представление, он просто просит менеджера представления остановить представление. Менеджер представления разрывает все соединения и очищает все состояния.
Согласно одному варианту осуществления настоящего изобретения предусмотрены интерфейсы прикладного программирования (API). Эти API включают в себя методы просмотра представления и методы дачи представления. API просмотра включают в себя методы регистрации и отмены регистрации устройства отображения и метод посещения представления. API дачи представления включают в себя методы начала и остановки представления, приглашения и отключения посетителя, фильтрации экрана презентатора, извлечения списка отдельных пользователей и проекторов, извлечения возможностей, состояния и списка соединений проектора и извлечения и задания настроек и режима отображения проектора.
Краткое описание чертежей
Прилагаемые чертежи входят в состав и образуют часть описания изобретения, иллюстрируя некоторые аспекты настоящего изобретения, и совместно с описанием служат для объяснения принципов изобретения. На чертежах:
фиг.1 - блок-схема, в общем виде иллюстрирующая иллюстративную компьютерную систему, в которой реализуется настоящее изобретение;
фиг.2 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода;
фиг.3 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода;
фиг.4 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, коммуникации которых разбиты на множественные дискретные коммуникации, иллюстрирующие концепцию разложения;
фиг.5 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, коммуникации которых разбиты на множественные дискретные коммуникации, иллюстрирующие концепцию разложения;
фиг.6 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, определенные аспекты которых игнорируются, добавляются или переопределяются, иллюстрируя концепцию переопределения;
фиг.7 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, определенные аспекты которых игнорируются, добавляются или переопределяются, иллюстрируя концепцию переопределения;
фиг.8 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя сегментами кода, некоторые функции двух модулей кода которых сливаются так, что интерфейс между ними меняет форму, иллюстрируя концепцию внутритекстового кодирования;
фиг.9 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя сегментами кода, некоторые функции двух модулей кода которых сливаются так, что интерфейс между ними меняет форму, иллюстрируя концепцию внутритекстового кодирования;
фиг.10 - упрощенная блок-схема, иллюстрирующая программный интерфейс между двумя модулями кода, где коммуникация осуществляется косвенно путем разбиения коммуникации на множественные дискретные коммуникации, иллюстрируя концепцию разведения;
фиг.11 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления программного интерфейса между двумя модулями кода, где коммуникация осуществляется косвенно путем разбиения коммуникации на множественные дискретные коммуникации, иллюстрируя концепцию разведения;
фиг.12 - упрощенная блок-схема, иллюстрирующая динамически переписываемый код для замены программного интерфейса чем-либо другим, что достигает того же результата, иллюстрируя концепцию переписывания;
фиг.13 - упрощенная блок-схема, иллюстрирующая альтернативный вариант осуществления динамически переписываемого кода для замены программного интерфейса чем-либо другим, что достигает того же результата, иллюстрируя концепцию переписывания;
фиг.14А и 14В - схематические диаграммы, где показаны альтернативные архитектуры сетевой системы, в которой можно реализовать вариант осуществления изобретения, содержащей множественные компьютеры, в частности, проецирующий компьютер и множественные целевые компьютеры проецирования, а также экран дисплея или проектор в помещении для электронных конференций; и
фиг.15 - схематическая диаграмма, более подробно иллюстрирующая размещение и взаимные соединения компонентов прикладной программы проецирования и связанных с ними компонентов согласно варианту осуществления изобретения.
Хотя изобретение будет описано в связи с определенными предпочтительными вариантами осуществления, никакого ограничения этими вариантами осуществления не предусмотрено. Напротив, предусмотрен охват всех альтернатив, модификаций и эквивалентов, отвечающих сущности и объему изобретения, заданным в прилагаемой формуле изобретения.
Осуществление изобретения
На чертежах, где сходные позиции обозначают сходные элементы, проиллюстрирована реализация изобретения в подходящей вычислительной среде. Хотя это и не требуется, изобретение будет описано в общем контексте компьютерно-выполняемых инструкций, например, программных модулей, выполняемых персональным компьютером. В общем случае, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и пр., которые выполняют конкретные задания или реализуют те или иные абстрактные типы данных. Кроме того, специалистам в данной области очевидно, что изобретение можно осуществлять на практике применительно к другим конфигурациям компьютерной системы, включая карманные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, сетевые ПК, мини-компьютеры, универсальные компьютеры и т.п. Изобретение также можно осуществлять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться в локальных и удаленных запоминающих устройствах.
На фиг.1 показан пример подходящей среды 100 вычислительной системы, в которой можно реализовать изобретение. Среда 100 вычислительной системы является всего лишь примером подходящей вычислительной среды и не призвана как-либо ограничивать объем использования или функциональные возможности изобретения. Также вычислительную среду 100 не следует рассматривать как имеющую какую-либо зависимость или требование в отношении к какому-либо одному компоненту, проиллюстрированному в иллюстративной операционной среде 100, или их комбинации.
Изобретение применимо ко многим другим средам или конфигурациям вычислительной системы общего или специального назначения. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть пригодны для использования в соответствии с изобретением, включают в себя, но не исключительно, персональные компьютеры, компьютеры-серверы, карманные или портативные устройства, многопроцессорные системы, системы на основе микропроцессора, телевизионные приставки, программируемую бытовую электронику, сетевые ПК, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и т.п.
Изобретение можно описать в общем контексте компьютерно-выполняемых инструкций, например программных модулей, выполняемых компьютером. В общем случае программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Изобретение также можно применять на практике в распределенных вычислительных средах, где задания выполняются удаленными обрабатывающими устройствами, связанными посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться как на локальных, так и на удаленных компьютерных носителях данных, включая запоминающие устройства.
Согласно фиг.1 иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не исключительно процессор 120, системную память 130 и системную шину 121, которая подключает различные компоненты системы, включая системную память, к процессору 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину с использованием разнообразных шинных архитектур. В порядке примера, но не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенного стандарта ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину подключений периферийных компонентов (PCI), также именуемую шиной расширения.
Компьютер 110 обычно содержит разнообразные компьютерно-считываемые носители. Компьютерно-считываемые носители могут представлять собой любые имеющиеся носители, к которым может осуществлять доступ компьютер 110, и включают в себя энергозависимые и энергонезависимые носители, сменные и стационарные носители. В порядке примера, но не ограничения компьютерно-считываемый носитель может представлять собой компьютерный носитель данных или среду передачи данных. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные посредством любого способа или технологии для хранения информации, например, компьютерно-считываемых команд, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но не исключительно ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или иные оптические дисковые носители данных, магнитные кассеты, магнитную ленту, магнитные дисковые носители данных или иные магнитные запоминающие устройства или любой другой носитель, который можно использовать для хранения полезной информации и к которому компьютер 110 может осуществлять доступ. Среды передачи данных обычно воплощают компьютерно-считываемые команды, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, например, несущей волны или иного транспортного механизма. Среды передачи данных также включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, одна или несколько характеристик которого изменяется так, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения среды передачи данных содержат проводные среды, например проводную сеть или прямое проводное соединение, и беспроводные среды, например акустические, РЧ, инфракрасные и другие беспроводные среды. В число компьютерно-считываемых сред входят также комбинации любых из вышеперечисленных позиций.
Системная память 130 содержит компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, например, постоянной памяти (ПЗУ) 131 и оперативной памяти (ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая основные процедуры, которые помогают переносить информацию между элементами компьютера 110, например, при запуске, хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые непосредственно доступны процессору 120 и/или в данный момент обрабатываются им. В порядке примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных. В порядке примера на фиг.1 показан привод 141 жесткого диска, который производит считывание со стационарного энергонезависимого магнитного носителя и запись на него, привод 151 магнитного диска, который производит считывание со сменного энергонезависимого магнитного диска 152 и запись на него, и привод 155 оптического диска, который производит считывание со сменного энергонезависимого оптического диска 156, например CD-ROM или другого оптического носителя, и запись на него. Другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители данных, которые можно использовать в иллюстративной операционной среде, включают в себя, но не исключительно, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, ленту для цифрового видео, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.д. Привод 141 жесткого диска обычно подключен к системной шине 121 посредством интерфейса стационарной памяти, например, интерфейса 140, а привод 151 магнитного диска и привод 155 оптического диска обычно подключены к системной шине 121 посредством интерфейса сменной памяти, например интерфейса 150.
Приводы и соответствующие компьютерные носители данных, описанные выше и показанные на фиг.1, обеспечивают хранение компьютерно-считываемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 показано, что на жестком диске 141 хранятся операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть идентичны операционной системе 134, прикладным программам 135, другим программным модулям 136 и программным данным 137 или отличны от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь другими позициями, чтобы показать, что они, как минимум, представляют собой разные копии. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, например, клавиатуру 162 и указательное устройство 161, под которым обычно понимают мышь, шаровой манипулятор или сенсорную панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подключают к процессору 120 через интерфейс 160 пользовательского ввода, который подключен к системной шине, но можно подключать посредством других структур интерфейса и шины, например, параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 191 или устройство отображения другого типа может также быть подключен к системной шине 121 через интерфейс, например, видеоинтерфейс 190. Помимо монитора, компьютеры могут содержать другие периферийные устройства вывода, например, громкоговорители 197 и принтер 196, которые может быть подключены через периферийный интерфейс 195 вывода.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или несколькими удаленными компьютерами, например, удаленным компьютером 180. В качестве удаленного компьютера 180 может выступать другой персональный компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий сетевой узел, который обычно содержит многие или все элементы, описанные выше применительно к персональному компьютеру 110, хотя на фиг.1 показано только запоминающее устройство 181. Логические соединения, указанные на фиг.1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут включать в себя другие сети. Такие сетевые среды обычно используются в офисных, производственных компьютерных сетях, интрасетях и в Интернете.
При использовании в сетевой среде ЛС персональный компьютер 110 подключен к локальной сети 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другие средства установления соединений по ГС 173, например Интернету. Модем 172, который может быть внутренним или внешним, может быть подключен к системной шине 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, указанные в отношении персонального компьютера 110, или часть из них могут храниться в удаленном запоминающем устройстве. В порядке примера, но не ограничения, на фиг.1 показано, что удаленные прикладные программы 185 размещены в запоминающем устройстве 181. Очевидно, что показанные сетевые соединения являются иллюстративными и что можно использовать другие средства установления линии(й) связи между компьютерами.
Ниже изобретение будет описано со ссылкой на действия и символические представления операций, которые выполняются одним или несколькими вычислительными устройствами, если не указано обратное. При этом следует понимать, что такие действия и операции, которые иногда называют компьютерно-выполняемыми, включают в себя манипуляции, выполняемые процессором компьютера над электрическими сигналами, представляющими данные в структурированной форме. Эти манипуляции сводятся к преобразованию данных или поддержанию их в ячейках системы памяти компьютера, в результате чего происходит перенастройка или иное изменение работы компьютера таким образом, как хорошо известно специалистам в данной области. Структуры данных, где поддерживаются данные, являются физическими ячейками памяти, которые имеют конкретные свойства, заданные форматом данных. Однако, хотя изобретение описано в вышеприведенном контексте, это не означает, и это очевидно специалистам в данной области, что некоторые из описанных ниже действий и операций не могут также выполняться аппаратными средствами.
В действительности, программный интерфейс (или просто интерфейс) можно рассматривать как любой механизм, процесс, протокол, позволяющий одному или нескольким сегменту(ам) кода осуществлять связь с функциями, обеспечиваемыми одним или несколькими другими сегментами кода, или доступ к ним. Альтернативно программный интерфейс можно рассматривать как один или несколько механизм(ов), метод(ов), функциональный(х) вызов(ов), модуль(ей), объект(ов) и т.п. компонента системы, способного(ых) обмениваться данными с одним или несколькими другим(и) механизмом(ами), методом(ами), функциональным(ыми) вызовом(ами), модулем(ями) и т.п. другого(их) компонента(ов). Термин "сегмент кода" в предыдущем предложении предусматривает включение одной или более инструкций или строк кода и содержит, например, модули кода, объекты, подпрограммы, функции и т.д., независимо от применяемой терминологии или от того, раздельно ли компилируются сегменты кода, или предоставлены ли сегменты кода в виде исходного, промежуточного или объектного кода, используются ли сегменты кода в системе прогона или процессе, или размещены ли они на одной машине или на разных машинах или же распределены по множественным машинам, или реализованы ли функции, представленные сегментами кода, полностью программными средствами, полностью аппаратными средствами или комбинацией программных и аппаратных средств.
Теоретически программный интерфейс можно рассматривать обобщенно, как показано на фиг.2 или фиг.3. На фиг.2 показан интерфейс Интерфейс 1, служащий каналом связи между первым и вторым сегментами кода. На фиг.3 показан интерфейс, содержащий интерфейсные объекты I1 и I2 (которые могут быть или не быть частью первого и второго сегментов кода), которые позволяют первому и второму сегментам кода связываться посредством носителя М. Согласно фиг.3 интерфейсные объекты I1 и I2 можно рассматривать как отдельные объекты одной системы, а также можно считать, что объекты I1 и I2 плюс носитель М образуют интерфейс. Хотя на фиг.2 и 3 показаны двусторонний поток и интерфейсы по обе стороны потока, некоторые реализации могут обеспечивать только один информационный поток в одном направлении (или ни одного информационного потока, как описано ниже) или интерфейсный объект с одной стороны. В порядке примера, но не ограничения, определение программного интерфейса охватывает такие термины, как программный интерфейс приложения (API), точка входа, метод, функция, подпрограмма, вызов удаленной процедуры и интерфейс компонентной объектной модели (COM).
Аспекты такого программного интерфейса могут включать в себя метод, посредством которого первый сегмент кода передает информацию (где термин "информация" используется в самом широком смысле и включает в себя данные, команды, запросы и т.д.) второму сегменту кода; метод, посредством которого второй сегмент кода принимает информацию; и структуру, последовательность, синтаксис, организацию, схему, хронирование и содержимое информации. В этой связи, сам по себе нижележащий транспортный носитель может быть не важен для действия интерфейса, является ли носитель проводным или беспроводным или комбинированным, при условии, что информация переносится так, как определено интерфейсом. В некоторых случаях информация может не передаваться в одном или обоих направлениях в традиционном смысле, поскольку перенос информации может либо осуществляться другим механизмом (например, информация может помещаться в буфер, файл и т.п., отдельный от информационного потока между сегментами кода), либо не существовать, как в случае, когда один сегмент кода просто обращается к функции, осуществляемой вторым сегментом кода. Некоторые или все эти аспекты могут быть важны в данном случае, например, в зависимости от того, являются ли сегменты кода частью системы в свободно связанной или тесно связанной конфигурации, и поэтому этот список следует рассматривать в порядке иллюстрации, но не ограничения.
Это определение программного интерфейса известно специалистам в данной области и явствует из нижеследующего подробного описания изобретения. Существуют, однако, другие пути реализации программного интерфейса и, если явно не указано обратное, их также следует рассматривать в объеме формулы изобретения, приведенного в конце этого описания изобретения. Такие другие пути могут оказаться более изощренными или сложными, чем упрощенная функция для достижения, в принципе, того же результата. Теперь кратко опишем некоторые иллюстративные альтернативные реализации программного интерфейса.
А. РАЗЛОЖЕНИЕ
Коммуникация от одного сегмента кода к другому может осуществляться косвенно путем разбиения коммуникации на множество дискретных коммуникаций. Это схематически представлено на фиг.4 и 5. Там показано, что некоторые интерфейсы можно описывать в терминах делимых множеств функций. Таким образом, функции интерфейса, показанные на фиг.2 и 3, можно разлагать для получения того же результата, так же, как число 24 можно представить как 2 умноженное на 2 умноженное на 3 умноженное на 2. Соответственно согласно фиг.4 функцию, обеспечиваемую интерфейсом Интерфейс 1, можно разложить для преобразования коммуникаций интерфейса по множественным интерфейсам Интерфейс 1А, Интерфейс 1В, Интерфейс 1С и т.д., получая тот же результат. Согласно фиг.5 функцию, обеспечиваемую интерфейсом I1, можно разложить по множественным интерфейсам I1a, I1b, I1c и т.д., получая тот же результат. Аналогично, интерфейс I2 второго сегмента кода, который принимает информацию от первого сегмента кода, можно разложить на множественные интерфейсы I2a, I2b, I2c и т.д. При разложении количество интерфейсов, входящих в состав первого сегмента кода, не обязано совпадать с количеством интерфейсов, входящих в состав второго сегмента кода. В любом из случаев, представленных на фиг.4 и 5, функциональная сущность интерфейсов Интерфейс 1 и I1 остается такой же, как показано на фиг.2 и 3 соответственно. Разложение интерфейсов можно также осуществлять в соответствии со свойствами ассоциативности, коммутативности и другими математическими свойствами, так что разложение может быть трудно распознаваемым. Например, упорядочение операций может быть не важно, и, следовательно, функция, осуществляемая интерфейсом, может хорошо осуществляться до достижения интерфейса, другим фрагментом кода или интерфейса, или осуществляться отдельным компонентом системы. Кроме того, профессиональному программисту очевидно, что одного и того же результата можно достичь разными путями, делая разные функциональные вызовы.
В. ПЕРЕОПРЕДЕЛЕНИЕ
Square (input, precision, output)
input
, precision
output
precision
meaningless
additional
В некоторых случаях имеется возможность игнорировать, добавлять или переопределять определенные аспекты (например, параметры) программного интерфейса, тем не менее, получая нужный результат. Это показано на фиг.6 и 7. Пусть, например, интерфейс Интерфейс 1, показанный на фиг.2, содержит функциональный вызов  (квадрат), вызов, который содержит три параметра,  (вход)(точность) и (выход), и который исходит от 1-го сегмента кода на 2-й сегмент кода. Если средний параметр,, не играет роли в данном сценарии, как показано на фиг.6, его можно просто игнорировать или даже заменить (в данной ситуации) параметром  (не имеющий смысла). Можно также добавить параметр  (дополнительный), не играющий роли. В любом случае, функция "квадрат" может выполняться при условии, что выходное значение возвращается после того, как входное значение возводится в квадрат вторым сегментом кода. "Точность" может быть весьма важным параметром для некоторой последующей или другой части вычислительной системы; если же выясняется, что для узкой цели вычисления квадрата "точность" не требуется, ее можно заменить или игнорировать. Например, вместо того, чтобы передавать действительное значение "точность", можно передавать не имеющее смысла значение, например, дату рождения, не оказывая отрицательного влияния на результат. Аналогично, как показано на фиг.7, интерфейс I1 можно заменить интерфейсом I1', переопределенным на игнорирование или добавление параметров к интерфейсу. Интерфейс I2 можно аналогично переопределить как интерфейс I2', переопределенный на игнорирование ненужных параметров или параметров, которые можно обрабатывать в другом месте. Суть в том, что в некоторых случаях программный интерфейс может включать в себя аспекты, например, параметры, которые, по некоторой причине, не нужны и потому могут игнорироваться или переопределяться или обрабатываться в другом месте для других целей.
С. ВНУТРИТЕКСТОВОЕ КОДИРОВАНИЕ
(input, output),
input
output
input
Возможно также осуществлять слияние некоторых или всех функций двух отдельных модулей кода, в результате чего "интерфейс" между ними изменяет форму. Например, функции, указанные на фиг.2 и 3, можно преобразовать в функции, указанные на фиг.8 и 9 соответственно. Согласно фиг.8, предыдущие 1-й и 2-й сегменты кода, показанные на фиг.2, сливаются в модуль, содержащий их обе. В этом случае сегменты кода могут по-прежнему связываться друг с другом, но интерфейс можно преобразовать к форме, более пригодной для единого модуля. Так, например, формальные операторы Call и Return могут уже не требоваться, но аналогичные обработка или отклик(и), соответствующие интерфейсу Интерфейс 1, по-прежнему могут иметь силу. Аналогично, как показано на фиг.9, интерфейс I2, показанный на фиг.3, частично (или полностью) можно записать внутритекстово в интерфейс I1, чтобы сформировать интерфейс I1". Показано, что интерфейс I2 делится на I2a и I2b, и часть I2a интерфейса закодирована внутритекстово с интерфейсом I1 для формирования интерфейса I1". Для конкретного примера, положим, что интерфейс I1, показанный на фиг.3, осуществляет функциональный вызов square  получаемый от интерфейса I2, который после обработки значения, переданного посредством  (для возведения его в квадрат) вторым сегментом кода, передает результат возведения в квадрат обратно посредством . В этом случае обработка, производимая вторым сегментом кода (возведение  в квадрат), может осуществляться первым сегментом кода без обращения к интерфейсу.
D. РАЗВЕДЕНИЕ
Коммуникация от одного сегмента кода к другому может осуществляться косвенно путем разбиения коммуникации на множественные дискретные коммуникации. Это схематически обозначено на фиг.10 и 11. Согласно фиг.10 один или несколько фрагментов связующего программного обеспечения (интерфейс(ы) разведения, поскольку они разводят функциональные возможности и/или функции интерфейса от исходного интерфейса), предусмотрены для преобразования коммуникаций на первом интерфейсе, Интерфейсе 1, чтобы согласовывать их с другим интерфейсом, в данном случае интерфейсами Интерфейсом 2А, Интерфейсом 2В и Интерфейсом 2С. Это должно происходить, например, когда установлена база приложений, предназначенная для связи, скажем, с операционной системой в соответствии с протоколом Интерфейса 1, но затем операционная система изменилась для использования другого интерфейса, в данном случае интерфейсов Интерфейса 2А, Интерфейса 2В и Интерфейса 2С. Дело в том, что исходный интерфейс, используемый 2-ым сегментом кода, изменился так, что он перестал быть совместимым с интерфейсом, используемым 1-ым сегментом кода, в результате чего используется посредник для обеспечения совместимости старого и нового интерфейсов. Аналогично, как показано на фиг.11, можно ввести третий сегмент кода с интерфейсом разведения DI1, чтобы принимать коммуникации от интерфейса I1, и с интерфейсом разведения DI2, чтобы передавать функциональные возможности интерфейса, например, на интерфейсы I2a и I2b, перенастроенные на работу с DI2, но при этом получать тот же функциональный результат. Аналогично, DI1 и DI2 могут работать совместно, чтобы преобразовывать функциональные возможности интерфейсов I1 и I2, указанных на фиг.3, к новой операционной системе, в то же время обеспечивая такой же или аналогичный функциональный результат.
Е. ПЕРЕПИСЫВАНИЕ
Еще один возможный вариант состоит в динамическом переписывании кода для замены функциональных возможностей интерфейса чем-то другим, что, тем не менее, приводит к тому же общему результату. Например, может иметь место система, в которой сегмент кода, представленный на промежуточном языке (например, Microsoft IL, Java ByteCode и пр.), поступает на компилятор или интерпретатор, работающий по принципу "точно вовремя" (JIT), в среде выполнения (например, обеспечиваемый каркасом. Net, средой выполнения Java или другими подобного типа средами выполнения). JIT-компилятор может быть выполнен с возможностью динамически преобразовывать коммуникации от 1-го сегмента кода ко 2-му сегменту кода, т.е. согласовывать их с другим интерфейсом, который может требоваться 2-му сегменту кода (либо исходному, либо другому 2-му сегменту кода). Это обозначено на фиг.12 и 13. Согласно фиг.12 этот подход аналогичен вышеописанному сценарию разведения. Это должно происходить, например, когда установленная база приложений предназначена для связи с операционной системой в соответствии с протоколом Интерфейса 1, но затем операционная система изменилась для использования другого интерфейса. JIT-компилятор можно использовать для согласования коммуникаций в оперативном режиме от приложений установленной базы к новому интерфейсу операционной системы. Согласно фиг.13 этот подход динамического переписывания интерфейса(ов) можно применять также для динамического разложения или иного изменения интерфейса(ов).
Заметим также, что вышеописанные сценарии для достижения того же или аналогичного результата, как интерфейс через альтернативные варианты осуществления, можно также комбинировать по-разному, последовательно и/или параллельно, или с другим промежуточным кодом. Таким образом, представленные выше альтернативные варианты осуществления не являются взаимоисключающими, и их можно смешивать, подбирать и комбинировать для получения сценариев, идентичных или эквивалентных исходным сценариям, представленным на фиг.2 и 3. Заметим также, что, как и в большинстве программных конструкций, имеются другие аналогичные пути достижения тех же или сходных функциональных возможностей интерфейса, которые здесь могут не быть описаны, но, тем не менее, отвечают сущности и объему изобретения, т.е. следует отметить, что это, по меньшей мере, частично, функциональные возможности, представленные интерфейсом, и преимущественные результаты, обеспечиваемые им, которые обуславливают ценность интерфейса.
С учетом этого обратимся к фиг.14А. На этой фигуре схематически показана сетевая среда, в которой можно осуществлять настоящее изобретение. В частности, сетевая среда, показанная на фигуре, включает в себя проекционное устройство или презентатор 201, которое может являться любым вычислительным устройством, например, описанным выше со ссылкой на фиг.1, для проецирования информации на одно или несколько целевых устройств проецирования или посетителей 203, 205, 207 и 209. Целевые устройства проецирования или посетители 203-207 также называются пользователями и показаны как неспециализированные вычислительные устройства, аналогичные презентатору 201. В этом случае, например, посетители (пользователи) 203-207 могут представлять собой или использовать, в порядке примера, но не ограничения, портативные компьютеры, настольные компьютеры, карманные вычислительные устройства и любые другие многоцелевые вычислительные устройства или комбинацию этих типов устройств. Пользователь не обязан применять или представлять собой традиционное вычислительное устройство и может представлять собой, например, телевизионную систему. Сеть 211 используется для переноса информации между посетителями 203-207 и презентатором 201.
Аналогично, в число посетителей может дополнительно или альтернативно входить специализированное проекционное устройство, например, электронный проектор для конференц-зала или устройство отображения 209, которое можно называть проектором. Как и другие посетители (пользователи) 203-207, посетитель (проектор) 209, предпочтительно, связывается с презентатором 201 (который также является пользователем) через сеть 211. Сеть 211 может представлять собой сеть любого типа, но обычно содержит беспроводные интерфейсы между презентатором 201 и сетью 211 и между сетью 211 и посетителями (пользователями) 203-207. Кроме того, интерфейс между сетью 211 и посетителем (проектором) 209 может, по желанию, быть проводным или беспроводным. Например, поскольку проектор 209 может оставаться в определенном месте, например, в конференц-зале, в течение долгого времени, наличие проводного интерфейса между проектором 209 и сетью 211 не приведет к значительному уменьшению удобства использования устройства. Сама по себе сеть 211 является, в общем случае, хотя и не обязательно, проводной инфраструктурой, например учрежденческой ЛС или ГС или другой традиционной полностью или частично проводной сетью.
На фиг.14В показана альтернативная сетевая среда. В частности, презентатор 201 и посетители 203-209 связаны между собой самоорганизующейся беспроводной сетью, состоящей из беспроводных линий связи 213-225. Заметим, что не все соединения 213-225 необходимы, поскольку самоорганизующаяся сеть не требует прямого соединения каждого узла с каждым другим узлом. Например, узел может быть подключен ко всем узлам самоорганизующейся сети косвенно через единичное соединение с другим узлом. Таким образом, самоорганизующиеся топологии включают в себя кольца, паутины, лучевые структуры и/или другие необходимые топологии. Нередко, физическое удаление конкретного устройства от других устройств будет определять, к какому/каким устройству или устройствам, если таковые имеются, самоорганизующейся сети непосредственно подключено данное устройство.
Прежде чем перейти к подробному описанию механизмов взаимодействия, кратко опишем сценарии пользования и взаимодействия вышеупомянутых компонентов. Презентатор 201 имеет возможность представлять пожелание отдельного лица проецировать интересующий его материал отдельным получателям, обычно в конференц-зале или зале для собраний, хотя система, отвечающая изобретению, пригодна для использования не только в служебных помещениях, но и, например, в домашних условиях. Интересующий материал может быть графическим, например, в виде изображений или видеозаписи, или текстовым, например, в виде документа, таблицы и т.п., и также может содержать аудиофрагменты. Согласно варианту осуществления изобретения интересующий материал целиком является аудиоинформацией. Хотя интересующий материал не обязательно является созданным на компьютере, он предпочтительно доступен презентатору 201 локально или удаленно в компьютерно-считываемом формате. Посетители (пользователи) 203-207 могут представлять собой портативные компьютеры индивидуальных получателей, тогда как посетитель (проектор) 209 может представлять собой специализированную проекционную систему, например, проектор для конференц-зала или монитор с большим экраном или иной дисплей, обычно не связанный физически с каким-либо одним пользователем в отличие от мобильного портативного или карманного устройства.
Сетевое соединение между посетителями 203-209 обычно начинается, когда каждое устройство входит в зону связи презентатора 201, связанного с представляющим пользователем. Так, например, предположим, что проектор 209 постоянно находится в конференц-зале. Когда представляющий пользователь входит в конференц-зал с презентатором 201, между проектором 209 и презентатором 201 формируется беспроводное соединение, либо самоорганизующееся, либо через сетевую инфраструктуру. В этом случае представляющий пользователь может проецировать материал со своего устройства 201 на экран проектора 209, чтобы его могли наблюдать индивидуальные получатели. Таким образом, представляющий пользователь осуществляет представление без физического подключения каких-либо кабелей или шнуров и может аналогично закончить представление или передать управление им другому индивидуальному представляющему, использующему другое проекционное устройство, без отсоединения каких-либо кабелей или шнуров.
По существу, также представляющий пользователь может представлять интересующий материал нескольким целевым устройствам, например посетителям (пользователям) 203-207. Например, согласно одному варианту осуществления настоящего изобретения сетевое соединение между презентатором 201 и пользователями 203-207 может автоматически выполняться после автоматизированного обнаружения, так что пользователю не требуется находить физические соединения и манипулировать ими. В этом случае представление материала происходит от презентатора 201 на экраны посетителей, которые могут быть портативными компьютерами, принадлежащими индивидуальным получателям. Ниже мы подробно рассмотрим конкретные механизмы этого процесса, а также связанные с ним вопросы безопасности.
На фиг.15 показаны различные компоненты и двоичные файлы, присутствующие в системе, и методы настоящего изобретения. Устройство 500 представления создается и регистрируется на машине презентатора. Устройство регистрируется с помощью UPnP, и после регистрации его можно обнаружить с помощью SSDP. Предпочтительно устройство идентифицируется по его уникальному имени устройства (UDN), которое создается UPnP в процессе регистрации. Устройство содержит службу UPnP, именуемую службой представления. Пользовательское устройство отображения 502 создается и регистрируется на машине посетителя. Это устройство также регистрируется с помощью UPnP, и после регистрации его можно обнаружить с помощью SSDP. Это устройство также идентифицируется по его UDN и содержит службу UPnP, именуемую пользовательской службой отображения. Три двоичных файла, присутствующие на этой фиг.15, включают в себя CRP presentation.dll 504, CRP attendee.dll 506 и Microsoft.CRP.dll 508. CRP presentation.dll содержит устройство представления, являющееся устройством представления UPnP. Кроме того, этот двоичный файл обеспечивает функциональные возможности регистрации и отмены регистрации устройства представления. Эти методы используются для регистрации и отмены регистрации устройств представления. Также включены функциональные возможности управления проектором. Эти методы используются для управления проектором, например, для получения возможностей проектора, режима отображения и т.п. Наконец, CRP presentation.dll содержит функциональные возможности управления посетителем. Эти методы используются для отправки приглашений посетителям.
Двоичный файл CRP attendee.dll обеспечивает функциональные возможности пользовательского устройства отображения, являющегося устройством UPnP для пользовательского отображения. Предусмотрены также функциональные возможности регистрации и отмены регистрации пользовательского устройства отображения. Эти методы используются для регистрации и отмены регистрации пользовательского устройства отображения. Наконец, двоичный файл CRP attendee.dll содержит функциональные возможности управления представлением. Эти методы используются для запрашивания приглашения у презентатора.
Двоичный файл Microsoft.CRP.dll представляет собой надстройку, предусмотренную над двоичными файлами CRP.attendee.dll и CRP presentation.dll. Это открывает интерфейсы приложения с дружественным для пользователя управлением. Этот Microsoft.CRP.dll также реализует функции управления сеансами 510 обслуживания терминалов и создания их.
Система и способы проектора для конференц-зала (CRP), отвечающие настоящему изобретению, зависят от трех факторов. Во-первых, это пользовательский интерфейс, обеспеченный для приложения. Во-вторых, это обслуживание терминалов (TS). Чтобы проецировать представление на другую машину (проектор или посетитель), используются API сотрудничества с обслуживанием терминалов. Обслуживание терминалов позволяет одному или нескольким клиентам обслуживания терминалов подключаться к серверу обслуживания терминалов и наблюдать за сеансом, отображаемым на экране сервером TS (обычно настольным компьютером). Презентатор действует как сервер обслуживания терминалов, а посетители и проекторы действуют как клиенты обслуживания терминалов. В-третьих, CRP зависит от UPnP. UPnP имеет концепцию устройства, которая открывает набор действий, которые может вызывать любое приложение на локальной или удаленной машине. UPnP также обеспечивает SSDP для обнаружения устройств UPnP.
В типичной установке презентатор, посетитель и проектор являются устройствами UPnP. С использованием SSDP пользователь может найти устройства представления, устройства посетителя и устройства проектора в локальной сети. Чтобы клиент TS мог подключиться к серверу TS, клиенту TS нужно приглашение, генерируемое сервером TS. Для передачи приглашения от сервера клиенту используются действия, обеспечиваемые устройством UPnP. Имеются действия, которые могут быть вызваны устройствами UPnP, например, устройство представления будет действовать, запрашивая приглашение, тогда как устройства посетителя будут совершать действия, которые можно использовать для приглашения посетителя.
Когда презентатор желает дать представление, он создает сеанс 510 обслуживания терминалов. При наличии посетителей и проекторов, которых он желает пригласить, он создает мандат обслуживания терминалов и посылает приглашение посетителям и проекторам. Чтобы пригласить посетителя, вызывается действие приглашения на устройстве посетителя. Чтобы подключиться к проектору, вызывается действие подключения на UPnP-устройстве проектора. Когда проектор и посетитель имеют приглашение, они предоставляют приглашение клиенту обслуживания терминалов. Этот клиент обслуживания терминалов связывается с сеансом обслуживания терминалов.
Как известно из уровня техники, сервер TS является компонентом COM. Он используется двоичным файлом Microsoft.CRP.dll, рассмотренным выше. Для создания сеанса используются самые последние API сотрудничества с TS. Как и любой другой компонент COM, чтобы использоваться, он должен зарегистрироваться. Как известно из уровня техники, клиент TS является управляющим элементом ActiveX. С управляющим элементом ActiveX связаны некоторые свойства, как-то ширина, высота управляющего элемента, приглашение и пароль, если требуется для использования приглашения. Для использования управляющий элемент ActiveX должен зарегистрироваться. Для обнаружения устройств в системе CRP в качестве механизма обнаружения обычно используется SSDP. UDN этих устройств обеспечиваются в качестве входного параметра.
Переменные состояния для этих устройств в иллюстративном варианте осуществления настоящего изобретения включают в себя A_String, общего вида строку, используемую для представления конкретного значения или списка значений, и A_Name, строку имени или идентификации устройства отображения.
Введя переменные состояния, рассмотрим кратко действия. Эти действия включают в себя метод "приглашение" (Invite), метод "дружественное имя презентатора" (PresenterFriendlyName) и метода "псевдоним представления" (PresentationFriendlyName). Метод GetName ("получение имени") возвращает строку идентификации посетителя. Если заданное значение неверно, этот метод возвращает описание ошибки InvalidValue ("неверное значение").
Согласно одному варианту осуществления настоящего изобретения пользователь может осуществлять две операции, а именно пользователь может давать представление или наблюдать представление. Давая представление, презентатор может пожелать отобразить представление на проекторе и/или другом устройстве отображения пользователя. Желая дать представление, презентатор осуществляет следующие этапы. Во-первых, презентатор начинает сеанс представления. При этом создается устройство представления, которое могут обнаружить другие пользователи. Создается также сеанс обслуживания терминалов.
Презентатор также может пожелать обнаружить находящиеся поблизости проекторы и подключиться к этим проекторам. Для этого презентатор осуществляет SSDP-поиск проекторов. SSDP-поиск возвращает список проекторов. Затем презентатор выбирает из списка один или несколько проекторов. Для установления соединения обеспечиваются UDN проектора и, при необходимости, пароль. Приглашение для проектора создается на основании пароля с использованием менеджера приглашений сеанса TS. Приглашение направляется проектору путем вызова действия подключения на устройстве отображения проектора.
Пользователь также может пожелать пригласить других пользователей для наблюдения представления. Для этого презентатор может произвести поиск других пользователей. Поиск обеспечивает UDN устройства отображения пользователя. Обнаружив UDN, менеджер приглашений обслуживания терминалов создает приглашение для приглашаемого (для обслуживания "только по приглашению", в противном случае используется приглашение общего вида). Приглашение направляется приглашаемому путем вызова действия приглашения на устройстве отображения пользователя.
Презентатор также может пожелать получать извещение, когда другой пользователь хочет посетить представление. Пользователь, желающий посетить представление, вызывает рассмотренное выше действие запроса приглашения (RequestInvitation) на устройстве представления. В этом случае, презентатору выполняется обратный вызов с информацией о пользователе. Презентатор может использовать эту информацию, чтобы пригласить пользователя, как и любого другого пользователя. Альтернативно презентатор может не желать иметь дело с приглашениями и может просто пожелать допускать всех к посещению представления без каких-либо аутентификаций или паролей. В обоих случаях, всякий раз при вызове действия запроса приглашения на устройстве представления презентатора приглашение немедленно направляется пользователю. Если представление снабжено системой безопасности, то приглашение будет защищено паролем.
Когда презентатор желает остановить представление, он просто отменяет регистрацию устройства представления и закрывает сеанс TS.
Другая операция, осуществляемая пользователем, заключается в просмотре представления. В этом случае посетитель может пожелать сначала обнаружить имеющиеся представления. Он может легко это сделать с использованием SSDP, что известно из уровня техники. Посетитель получает UDN представления, после чего вызывает действие запроса приглашения с соответствующей информацией на устройстве представления. Это возможно только в том случае, когда представление разрешает доступ посредством таких запросов. Если презентатор позволяет посетителю наблюдать представление, посетитель вызывает действие приглашения на устройстве отображения с приглашением. Приглашение дается клиенту TS для установления соединения. Клиент TS подключается к сеансу TS на презентаторе. В случае, когда презентатор желает пригласить посетителя без запроса приглашения, презентатор напрямую вызывает действие приглашения на устройстве отображения согласно рассмотренному выше.
После установления соединений представление может быть предоставлено посетителям, как пользователям, так и проекторам, в соответствии с методами, описанными в совместно рассматриваемой заявке № 10/179,431, озаглавленной "Усовершенствованные система и способ проецирования данных", поданной 25 июня 2002 г. и присвоенной подателю настоящей заявки, идеи и раскрытие которой сим включено в данное описание во всей полноте посредством ссылки. Как описано в этой совместно рассматриваемой заявке, сеть, по которой можно предоставлять представление, содержит беспроводную линию связи, совместимую с 802.11, эксплуатируемую либо в режиме инфраструктуры, либо как часть самоорганизующейся сети. Конечно, специалистам в данной области известно, что можно использовать и другие беспроводные сети, а также проводные сети. Кроме того, согласно этой совместно рассматриваемой заявке оповещение и определение местоположения пользователей может осуществляться также посредством механизма оповещения по стандарту "Universal Plug and Play", согласно которому компонент "Universal Plug and Play" посетителя оповещает о своем присутствии и возможностях компонент "Universal Plug and Play" презентатора. Альтернативно, компонент "Universal Plug and Play" презентатора может выполнять позитивный поиск и определять местоположение компонента "Universal Plug and Play" посетителей. Кроме того, возможен обратный процесс, в котором презентатор извещает о своем присутствии и своем представлении, что позволяет посетителям найти представление и запросить допуск к нему согласно рассмотренному выше.
Как указано выше, двоичный файл Microsoft.CRP.dll открывает управляемые интерфейсы. Главные классы, предусмотренные в этой системе CRP, включают в себя класс "представление" (presentation), класс "устройство посетителя" (attendee device), класс "проектор" (projector) и класс "посетитель" (attendee). Класс "представление" является основным классом, который использует презентатор. Чтобы начать представление, презентатору требуется присвоить значение этому классу. Класс "устройство посетителя" используется для просмотра представления. То есть для просмотра представления нужно присвоить значение этому классу. Он создает устройство посетителя и предоставляет приглашение для представления. Класс "проектор" представляет проектор. Он связывается с устройством проектора, чтобы получить информацию о проекторе. Наконец, класс "посетитель" представляет посетителя. Ниже приведено более подробное описание каждого из этих классов.
Обзор класса Microsoft.CRP.presentation приведен ниже в Таблице 1
Таблица 1
Из этой Таблицы 1 следует, что класс "представление" содержит два конструктора. Первый конструктор "представление" создает новое представление. Внутренне он, во-первых, присваивает значение сеансу обслуживания терминалов. Этот сеанс обслуживания терминалов относится к типу сеанса RDP. Во-вторых, он открывает сеанс. В-третьих, этот класс извлекает менеджер приглашений из объекта "сеанс TS". Менеджер приглашений обеспечивает функции создания приглашения. В-четвертых, этот конструктор создает общее приглашение. Затем оно подключается к событиям для подключения и отключения посетителя. Наконец, этот метод регистрирует устройство представления, вызывая метод "регистрация" в двоичном файле CRP presentation.dll. Метод "регистрация" возвращает описатель представления. Второй конструктор "представление" работает точно так же, как первый конструктор, с единственной разницей, что при генерации общего приглашения в качестве входного параметра передается пароль.
Свойства этого класса "представление" включают в себя свойство "только по приглашению", которое контролирует, является ли представление представлением "только по приглашению". Если представление осуществляется только по приглашению, то любой запрос на приглашение отклоняется. Если представление осуществляется не только по приглашению, то, если для события "запрос приглашения" не обеспечено ни одного делегата, вызывающему запрос приглашения предоставляется конструкция, созданная общим приглашением, а если для события "запрос приглашения" обеспечен делегат, то приложению выполняется обратный вызов.
Методы, открытые этим классом "представление", включают в себя метод "приглашение", используемый для приглашения посетителя, идентифицированного UDN устройства посетителя. Этот метод просто вызывает API "приглашение посетителя", обеспечиваемый двоичным файлом CRP presentation.dll. Используются общие приглашения, созданные при конструировании объекта "представление". Второй метод "приглашение" также предусмотрен для приглашения посетителя, идентифицированного UDN устройства посетителя. Приглашение, предоставляемое посетителю посредством этого метода, защищено паролем. Этапы, вызываемые в этом методе, состоят в создании приглашения с использованием менеджера приглашений TS. Приглашение имеет то свойство, что его можно использовать только один раз и что приглашение идентифицируется UDN посетителя. Поскольку два приглашения не могут иметь одно и то же имя, то если создано приглашение для этого UDN посетителя, то новое приглашение для того же посетителя не может быть создано. Второй этап этого метода состоит в вызове API "приглашение посетителя", обеспеченного двоичным файлом CRP presentation.dll с приглашением, созданным на первом этапе.
Этот класс "представление" также содержит метод "подключение проектора", который подключает представление к проектору. Осуществляемые этапы включают в себя создание приглашение для проектора. Это делается потому, что TS не делает различия между посетителем и проектором и генерирует только событие "не подключен" с объектом "посетитель TS". Объект "посетитель TS" имеет три свойства, идентификатор, имя и приглашение. Идентификатор генерируется сеансом TS и является локально уникальным. Имя представляет собой просто псевдоним, и приглашение является приглашением, первоначально направленным посетителю. Единственное, что отличает приглашенного пользователя от подключенного пользователя, это приглашение. Поэтому, чтобы отделить проекторы от посетителей, этот метод генерирует отдельное приглашение для каждого проектора. При возбуждении события "подключен" осуществляется проверка, предоставлено ли проектору приглашение только что подключенного посетителя TS. Если это так, то возбуждается событие "подключен проектор", в противном случае возбуждается событие "подключен посетитель". Второй этап этого метода создает приглашение, имеющее свойства, что его можно использовать только один раз, и именем приглашения является UDN проектора. Благодаря этому только одно приглашение может быть создано для проектора в данном сеансе. На третьем этапе после создания приглашения, вызывается API ConnectProjector, открытый двоичным файлом CRP presentation.dll. Это API возвращает проектору маркер сеанса. На четвертом этапе маркер сеанса и приглашение для проектора связываются с объектом "проектор". Наконец, объект "проектор" добавляется к списку проекторов. Список проекторов представляет собой список массивов, содержащий все проекторы, которые были приглашены. При отключении проектора он исключается из списка. Поскольку система может действовать на списках проекторов из обратных вызовов, она защищена замками. Предусмотрен также второй метод "подключение проектора", и единственная разница между этим методом и предыдущим методом "подключение проектора" состоит в том, что при генерации мандата в качестве входного параметра передают пароль.
Класс "представление" также содержит метод "отключение проектора" для отключения проектора. Этапы отключения проектора включают в себя поиск проектора и списка проекторов, вызов API отключения проектора, обеспечиваемого двоичным файлом CRP presentation.dll, для отключения проектора, и вызов метода отключения на объекте "посетитель TS", связанном с проектором. Этот класс также содержит метод "закрытие/ликвидация", используемый для ликвидации объекта "представление". Этапы ликвидации объекта "представление" включают в себя отмену регистрации PNP-устройства представления путем вызова метода "отмена регистрации", открытого двоичным файлом CRP presentation.dll. Наконец, сеанс TS закрывается.
Класс "представление" также обеспечивает различные события. Во-первых, событие "список посетителей изменен" сигнализируется при изменении списка посетителей. Список посетителей может изменяться при подключении или отключении посетителя, и это событие связывается с событием "подключен" и "отключен", генерируемым сеансом TS. Сеанс TS генерирует эти события, когда какой-либо пользователь (посетитель или проектор) устанавливает соединение. Событие, генерируемое сеансом TS, имеет объект "посетитель TS" в качестве параметра ("посетитель TS" имеет три свойства, а именно идентификатор, имя и приглашение, как указано выше). Поскольку необходимо отличать проектор от посетителя, для проектора создаются отдельные приглашения, как указано выше. Чтобы понять, сгенерировано ли событие вследствие проектора, производится поиск в списке проекторов на основании приглашения, использованного подключившимся пользователем. Если проектор присутствует в списке, генерируется событие "список проекторов изменен", в противном случае генерируется событие "список посетителей изменен". Этот событие "список проекторов изменен" сигнализируется при подключении или отключении проектора. Согласно рассмотренному выше событие основано на событии "подключен/отключен" TS. Если пользователь подключился как проектор, то объект "посетитель TS" связывается с объектом "проектор", присутствующим в списке проекторов. Аргумент события "список проекторов изменил аргументы события" имеет два свойства, а именно объект "проектор" (используется объект, присутствующий в списке проекторов) и тип произошедшего изменения (подключен/отключен).
Класс "представление" также имеет событие "запрошено приглашение", которое сигнализируется, когда посетитель запрашивает приглашение. Это событие не сигнализируется, если представление осуществляется только по приглашению. Приглашение основано на обратном вызове, обеспечиваемом двоичным файлом CRP presentation.dll. Обратный вызов генерируется, когда посетитель контактирует с устройством представления, чтобы запросить приглашение. Аргументы событий "запрошено приглашение" имеют следующие свойства. Первое - псевдоним посетителя, запрашивающего приглашение, и второе - UDN устройства посетителя. Если приложение отслеживает это событие и принимает решение предоставить приглашение посетителю, запросившему приглашение, оно должно вызвать presentation.invite с UDN, предоставленным в аргументах события "запрошено приглашение". Здесь важно понять реализацию защиты. UDN посетителя не является доверяемым. Поэтому нежелательно вызывать действие в устройстве посетителя, идентифицированного UDN, непосредственно не авторизованного пользователем. Поэтому, если никто не отслеживает это событие, немедленно возвращается общее приглашение вместо вызова действия приглашения на устройстве посетителя, идентифицированного этим UDN. Если же приложение отслеживает это событие, событие стимулируется и возвращается пустое приглашение.
Обзор класса Microsoft.CRP.projector проиллюстрирован ниже в Таблице 2.
Таблица 2
Как можно видеть из Таблицы 2, этот класс "проектор" содержит единственный конструктор. Этот конструктор "проектор" создает объект "проектор" только с набором UDN. Свойства этого класса включают в себя возможности, настройки отображения и состояние. Метод "возможности" извлекает возможности проектора. Этот метод является, в общем случае, надстройкой над API GetCapabilities, открываемым двоичным файлом CRP presentation.dll. Метод DisplaySettings (настройки отображения) получает или задает DisplaySettings проектора. Операторы get и set являются, в общем случае, надстройками над методами "настройки GetDisplay" и настройки "SetDisplay", отрытых двоичным файлом CRP presentation.dll. Настройки отображения могут быть получены/установлены, только если представление подключено к проектору. Метод "состояние" получает состояние проектора. Этот метод является, в общем случае, надстройкой над API GetState, открытого двоичным файлом CRP presentation.dll. Методы, открытые этим классом, представляют собой метод close/dispose (закрытие/ликвидация) и метод ToString. Методы close/dispose используются для ликвидации объекта "проектор". Единственная главная операция, осуществляемая этим объектом, состоит в том, чтобы вызвать отключение на объекте "посетитель TS", что позволяет удостовериться в отключении проектора. Метод ToString возвращает псевдоним проектора.
Класс Microsoft.CRP.attendee device проиллюстрирован ниже в Таблице 3.
Таблица 3
Из этой Таблицы 3 явствует, что этот класс содержит единственный конструктор. Конструктор "устройство посетителя" создает объект "устройство посетителя". Этот объект нужно создать для наблюдения представления. Конструктор выполняет вызов API регистрации, обеспечиваемого двоичным файлом CRP attendee.dll. API регистрации регистрирует устройство UPnP для посетителя. Методы, открытые этим классом, включают в себя метод "закрытие/ликвидация" и метод RequestInvitation (запрос приглашения). Методы закрытия/ликвидации используются для ликвидации объекта "посетитель". Единственной главной операцией, осуществляемой этим объектом, является вызов метода "отмена регистрации", открытого двоичным файлом CRP attendee.dll, для отмены регистрации устройства UPnP. Метод RequestInvitation используется для запрашивания приглашения презентатора, предоставившего UDN представления. Этот метод в основном вызывает API RequestInvitation, открытый двоичным файлом CRP attendee.dll. Презентатор может сразу предоставить приглашение, а может вызвать API приглашения на устройстве посетителя. Если презентатор предоставляет приглашение немедленно, то этот метод возвращает приглашение, а в противном случае возвращает string.empty. Единственным событием, предусмотренным для этого класса, является событие "приглашение имеется". Это событие сигнализируется, когда презентатор приглашает посетителя. Информация, имеющаяся в классе аргументов события "приглашение имеется", включает в себя само приглашение, псевдоним представления и псевдоним презентатора. Если посетитель желает использовать приглашение, ему следует передать приглашение управляющему элементу ActiveX и вызвать соединение на управляющем элементе. Затем управляющий элемент устанавливает сеанс TS для сервера.
Обзор класса Microsoft.CRP.Attendee приведен ниже в Таблице 4.
Таблица 4
Свойства этого класса включают в себя имя и уровень управления. Метод "имя" возвращает псевдоним посетителя. Метод "уровень управления" получает/устанавливает уровень управления посетителя. Уровни управления, которые может иметь посетитель, включают в себя интерактивный (т.е. посетитель может управлять указателем мыши презентатора) и наблюдательный (посетитель может только наблюдать представление). Этот класс также открывает методы "отключение" (Disconnect) и ToString. Метод Disconnect отключает посетителя, а метод ToString возвращает псевдоним посетителя.
Согласно иллюстративному варианту осуществления настоящего изобретения программные интерфейсы приложения (API) используются для осуществления сценариев просмотра представления и дачи представления. Эти API обычно доступны пользователю и обычно не доступны проектору. Реализация на стороне проектора обычно зависит от изготовителя проектора, хотя это не ограничивает объем изобретения. Иллюстративные варианты осуществления таких API, которые построены в соответствии с настоящим изобретением, рассмотрены ниже. Согласно предпочтительному варианту осуществления эти API содержат управляемый код. Однако следует понимать, что эти API представлены в качестве иллюстративных вариантов осуществления и не ограничивают объем изобретения.
Первый набор API, который мы рассмотрим, позволяет наблюдать представление. Типичные сценарии, используемые этими API, предусматривают, что пользователь либо желает посетить представление, непосредственно обнаружив представление и присоединившись к представлению посредством определенного приглашения, либо желает сделать самого себя обнаружимым, а затем получить приглашение посетить представление. API и методы обратного вызова, поддерживающие эти функции, представляют собой API регистрации, API отмены регистрации и API запроса приглашения.
Иллюстративный вариант осуществления первого из рассматриваемых API приведен ниже в Таблице 5.
Таблица 5
Этот API регистрирует пользовательское устройство отображения. Когда устройство зарегистрировано, презентаторы могут обнаружить его. Затем эти презентаторы могут направить пользователю приглашение посетить представление. Параметрами этого API являются псевдоним устройства отображения и функция обратного вызова, вызываемая, когда презентатор приглашает посетителя. Выходным параметром является описатель, который следует использовать в дальнейшем для отмены регистрации. Возвращаемыми значениями для этого API являются S_OK, означающее успех, и E_OUTOFMEMORY в случае нехватки памяти для завершения этой операции.
Иллюстративный вариант осуществления API отмены регистрации представлен ниже в Таблице 6.
Таблица 6
Этот API удаляет регистрацию устройства отображения. После запуска этого API, все активные сеансы заканчиваются, и другие посетители или презентаторы уже не могут обнаружить пользователя. В данном варианте осуществления, он требует описателя, возвращаемого функцией Register в качестве параметра, и не обеспечивает никаких возвращаемых значений.
Иллюстративный вариант осуществления API запроса приглашения представлен ниже в Таблице 7.
Таблица 7
Согласно рассмотренному выше, согласно одному варианту осуществления настоящего изобретения, представление является устройством UPnP. При вызове API запроса приглашения, в качестве входного параметра передается UDN устройства. На основании этого UDN, получают устройство представления. На устройстве представления, вызывают действие "запрос представления" (RequestInvitation) с информацией о пользователе. Если презентатор решает позволить пользователю посетить представление, то презентатор посылает в ответ приглашение. Параметрами этого API являются описатель, возвращенный методом "регистрация", UDN представления и, в качестве выходного параметра, приглашение. Презентатор может принять решение предоставить приглашение немедленно. Если презентатор не предоставляет приглашение, оно будет содержать пустую строку. Этот API выдает указатель успеха или неудачи в случае нехватки памяти или неверного аргумента.
Иллюстративный вариант осуществления метода "обратный вызов", предусмотренного для рассмотренного выше метода "регистрация", т.е. обратный вызов "приглашение", представлен ниже в Таблице 8.
Таблица 8
Этот метод вызывается, если какой-либо презентатор пригласил пользователя посмотреть представление. Приглашение, предоставленное в обратном вызове, может затем использоваться с API обслуживания терминалов для окончательного установления соединения, необходимого, чтобы действительно наблюдать представление. Параметры этого метода "обратный вызов" включают в себя приглашение, предоставляемое презентатором. Это приглашение можно использовать для присоединения к представлению. Другие параметры включают в себя псевдоним представления и псевдоним презентатора. Этот метод "обратный вызов" выдает указание на успех.
Следующий набор API, который мы рассмотрим, содержит API, используемые, когда пользователь хочет дать представление. Согласно одному варианту осуществления настоящего изобретения эти API включают в себя API Register (регистрации), API Unregister (отмены регистрации), API InviteAttendee (приглашения посетителя), API DisconnectProjector (отключение проектора), API GetState (получения состояния), API GetCapabilities (получения возможностей), API GetDisplaySettings (получения настроек отображения) и API SetDislaySettings (задания настроек отображения).
В порядке рассмотрения API представления иллюстративный вариант API регистрации представлен ниже в Таблице 9.
Таблица 9
Этот метод вызывается, когда презентатор хочет начать представление. При создании такого сеанса с использованием этого метода осуществляются следующие этапы: устройство представления создается и регистрируется с помощью UPnP. Согласно рассмотренному выше это позволяет любому обнаружить представление. Параметры использования этого метода включают в себя псевдоним представления, псевдоним презентатора и функцию обратного вызова, которая вызывается, когда пользователь запрашивает просмотр представления. API дополнительно выдает описатель создаваемого сеанса представления. API возвращает индикатор успеха или неудачи либо вследствие нехватки памяти, либо вследствие неверного параметра.
Иллюстративный вариант осуществления API отмены регистрации представлен ниже в Таблице 10.
Таблица 10
Этот API вызывается, когда презентатор хочет отменить регистрацию представления. При отмене регистрации представления отменяется регистрация устройства в UPnP. Единственным параметром для этого API в данном варианте осуществления является представление, подлежащее остановке.
Иллюстративный вариант осуществления API приглашения посетителя представлен ниже в Таблице 11.
Таблица 11
Этот API вызывается, когда презентатор желает пригласить посетителя получить представление. При вызове этого метода презентатор извлекает устройство с использованием UDN. Затем производится вызов метода "приглашение" на устройстве отображения для данного UDN с этим приглашением. Параметры этого метода включают в себя описатель этого представления, UDN устройства отображения пользователя, подлежащего приглашению, и приглашение, предоставляемое посетителю. API возвращает индикатор успеха или неудачи. Неудача может быть вызвана нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API подключения проектора приведен ниже в Таблице 12.
Таблица 12
При вызове этого API извлекается UDN проецирования. Затем вызывается метод "приглашение" на устройстве проецирования для данного UDN с этим приглашением. В случае успешного выполнения функции извлекается маркер. Ее параметрами являются описатель представления, приглашение, подлежащее предоставлению проектору, и, в качестве выходного параметра, маркер сеанса. API возвращает индикатор успеха или неудачи. Неудача может быть вызвана нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API отключения проектора приведен ниже в Таблице 13.
Таблица 13
Этот API вызывается для окончания подключения к указанному устройству. Параметры этого API включают в себя описатель представления, UDN отключаемого проектора и сеанс, подлежащий отключению. API возвращает индикатор успеха или неудачи. Неудача может быть вызвана нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API получения возможностей проектора приведен ниже в Таблице 14.
Таблица 14
Этот метод вызывается, когда презентатор хочет получить возможности проектора. Возможности проецирования получают, вызывая метод "получение возможностей" на проекционном устройстве. Презентатор вводит UDN проектора, и метод выводит возможности, связанные с проектором. Неудачи могут быть вызваны нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API получения состояния проектора приведен ниже в Таблице 15.
Таблица 15
Этот метод вызывается, когда презентатор хочет извлечь текущее состояние проектора. Это состояние проектора получают, вызывая метод "получение состояния" на проекционном устройстве. Презентатор вводит UDN проектора, и метод выводит состояние проектора. API возвращает индикатор успеха или неудачи. Неудачи могут быть вызваны нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API получения настроек отображения проектора приведен ниже в Таблице 16.
Таблица 16
Этот метод используется, когда презентатор хочет извлечь настройки отображения для проектора. Настройки отображения проектора получают, вызывая метод "получение настроек проецирования" на проекторе. Презентатор вводит UDN проектора, маркер сеанса, полученный в результате успешного выполнения метода "подключение проектора", и метод выводит настройки отображения для проектора. API возвращает индикатор успеха или неудачи. Неудачи могут быть вызваны нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Иллюстративный вариант осуществления API задания настроек отображения проектора приведен ниже в Таблице 17.
Таблица 17
Этот метод вызывается, когда презентатор хочет задать настройки отображения для проектора. Настройки дисплея задают, вызывая метод "задание настроек отображения" на проекционном устройстве. Презентатор вводит UDN проектора, маркер сеанса, полученный в результате успешного выполнения метода "подключение проектора", и настройки отображения, задаваемые для проектора. API возвращает индикатор успеха или неудачи. Неудачи могут быть вызваны нехваткой памяти для завершения операции, неверным аргументом или неверным описателем.
Согласно вышесказанному API начала представления включает в себя функцию обратного вызова. Ниже, в Таблице 18, представлен вариант осуществления функции обратного вызова PFN_REQUEST_INVITATION.
Таблица 18
Эта функция обратного вызова осуществляется, когда пользователь вызывает метод "запрос приглашения" на устройстве представления. Обратный вызов может возвращать само приглашение в качестве выходного параметра или просто возвращать пустую строку. Параметрами этого способа являются псевдоним посетителя, запрашивающего приглашение, UDN посетителя, запрашивающего приглашение, и в качестве выходного параметра приглашение, предоставляемое посетителю. Этот метод возвращает индикатор успеха.
Все приведенные здесь ссылки, включая патенты, патентные заявки и публикации, включены в данное описание во всей своей полноте посредством ссылки. Это значит, что каждая часть всякой такой ссылки считается частью данного описания, и потому никакая часть любой такой ссылки не исключается данным утверждением и никаким другим утверждением в данном описании из данного описания.
Вышеизложенное описание различных вариантов осуществления изобретения было представлено в целях иллюстрации и описания. Оно не носит исчерпывающего характера и не призвано ограничивать изобретение именно раскрытыми вариантами осуществления. В свете вышеизложенных принципов возможны многочисленные модификации или вариации. Рассмотренные варианты осуществления были выбраны и описаны для обеспечения наилучшей иллюстрации принципов изобретения и его практического применения, чтобы, таким образом, специалист в данной области мог использовать изобретение в различных вариантах осуществления и с различными модификациями, подходящими к конкретно рассматриваемому использованию. Все эти модификации и вариации находятся в пределах объема изобретения, определенного прилагаемой формулой изобретения, будучи интерпретированы в соответствии с охватом, на который они четко, законно и справедливо уполномочены.