- Введение в 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). Под обменом данными
здесь понимается передача параметров методам реализуемых интерфейсов и получение от них
результатов…
читать полностью
|