Введение в COM
Основные понятия. Интерфейс IUnknown. Разработка приложения-клиента: заголовочный файл, библиотека импорта, выбор модели параллелизма (concurrency model), инициализация COM-библиотеки, создание COM-объекта, завершение работы с COM-библиотекой. Интерфейс IMalloc. Работа со строками.

COM (Component Object Model) — это не зависящий от платформы и языка программирования объектно-ориентированный стандарт создания и использования двоичных программных компонентов. В рамках каждого такого программного компонента, называемого COM-сервером, реализуется один или несколько COM-классов, доступ к экземплярам которых осуществляется через предоставляемые ими интерфейсы. Под интерфейсом понимают группу логически связанных между собой функций, прототипы и порядок использования которых жестко определены, а реализация — нет. Эти функции принято называть методами интерфейса. Интерфейсы строго типизованы и не могут изменяться…

читать полностью

  Работа с ярлыками
Общие замечания, Интерфейс IShellLink. Интерфейс IPersistFile. Чтение/изменение существующего ярлыка. Создание нового ярлыка.

Для управления ярлыками в Windows используется COM-класс ShellLink, имеющий идентификатор CLSID_ShellLink и реализующий два интерфейса: IShellLink, который позволяет получать и назначать свойства ярлыка, и IPersistFile, предназначенный (в данном случае) для чтения и записи файла ярлыка…

читать полностью

  Пространство имен
Общие замечания. Интерфейс IShellFolder. Просмотр пространства имен. Стандартное окно выбора папки.

Начиная с Windows 95, система поддерживает так называемое пространство имен (shell namespace), в котором каждый объект (файл или папка) однозначно идентифицируется структурой типа ITEMIDLIST. Функции работы с пространством имен принимают в качестве одного из параметров указатель на такую структуру (или массив таких структур). В документации такие указатели обычно носят название PIDL. Подобный механизм позволяет операционной системе поддерживать так называемые виртуальные папки, которым не соответствуют никакие объекты в реальной файловой системе…

читать полностью

  Создание внутрипроцессного COM-сервера
Общие замечания. Интерфейс IClassFactory. Создание COM-объекта. Экспортируемые функции. Информация в системном реестре. Процесс разработки: генерация идентификаторов и связывание их с предоставляемыми интерфейсами; объявление предоставляемых интерфейсов; объявление класса, реализующего предоставляемые интерфейсы; реализация методов COM-класса; объявление соответствующей фабрики класса; реализация фабрики класса; реализация экспортируемых функций и точки входа COM-сервера; экспорт функций через файл определения модуля. Заключение.

Данный тип COM-сервера представляет собой обычную DLL-библиотеку, в которой реализован как минимум один COM-класс и несколько специальных функций, экспортируемых этой DLL и используемых COM-библиотекой. Для оптимизации создания однотипных COM-объектов приложением-клиентом, в дополнение к каждому COM-классу может быть реализована так называемая фабрика класса (class factory; широко применяется также довольно неудачный термин class object). Фабрика класса представляет собой специальный COM-класс, реализующий интерфейс IClassFactory. Заметим, что фабрике класса никогда не назначается собственный GUID…

читать полностью

  Создание автономного COM-сервера
Общие замечания. Синтаксис описания библиотеки типов. Использование типа данных SAFEARRAY. Информация в системном реестре. Особенности реализации фабрики класса. Процесс разработки: объявление и реализация вспомогательного класса, инкапсулирующего операции с «безопасными массивами»; генерация идентификаторов и связывание их с предоставляемыми интерфейсами; объявление предоставляемых интерфейсов; объявление класса, реализующего предоставляемые интерфейсы; реализация методов COM-класса; объявление соответствующей фабрики класса; реализация фабрики класса; описание библиотеки типов; Реализация точки входа COM-сервера.

Автономный COM-сервер представляет собой обычное Windows-приложение (исполняемый файл в формате PE). Поскольку сервер и приложение-клиент в данном случае выполняются в различных адресных пространствах, для обмена данными между ними должен использоваться специальный механизм, называемый маршалингом (marshaling). Под обменом данными здесь понимается передача параметров методам реализуемых интерфейсов и получение от них результатов…

читать полностью

обновлено
15.03.2006
 
Проверка PR и ТИЦ