Поделиться через


Определение COM-интерфейсов

Корпорация Майкрософт определяет множество COM-интерфейсов. В большинстве случаев эти универсальные интерфейсы можно использовать повторно. Однако некоторые приложения имеют определенные требования, которые позволяют определить собственные интерфейсы объектов или их необходимость.

Все интерфейсы COM должны быть производными от интерфейса IUnknown напрямую или косвенно. В рамках этого ограничения пользовательский интерфейс может поддерживать практически любой метод или параметр, включая асинхронные методы. Вы также можете создать библиотеку типов для пользовательских интерфейсов, чтобы клиенты могли получать доступ к сведениям о методах объекта во время выполнения. После определения интерфейса опишите его в языке определения интерфейса Майкрософт (MIDL), скомпилируйте и зарегистрируйте его, используйте его так же, как и любой универсальный интерфейс. С помощью распределенного COM методы интерфейса доступны как для удаленных процессов, так и для других процессов на одном компьютере.

Наконец, для создания COM-интерфейсов требуется среда разработки, которая включает компилятор C/C++ и компилятор Midl.exe.

Ниже приведены действия по созданию COM-интерфейса.

  • Определите способ предоставления поддержки маршалинга для интерфейса; либо с маршалингом на основе библиотеки типов, либо с помощью библиотеки прокси-сервера или заглушки DLL. Даже внутрипроцессные интерфейсы должны маршалироваться, если они должны использоваться через границы квартиры. Рекомендуется создать поддержку маршалинга в каждом интерфейсе COM, даже если вы не думаете, что вам потребуется. Дополнительные сведения см. в статье "Маршалинг интерфейса".
  • Описание интерфейса или интерфейсов в файле определения интерфейса (IDL). Кроме того, можно указать определенные локальные аспекты интерфейса в файле конфигурации приложения (ACF). Если вы используете маршалинг на основе библиотеки типов, добавьте инструкцию библиотеки , которая ссылается на интерфейсы, для которых требуется создать сведения о типе.
  • Используйте компилятор MIDL для создания файла библиотеки типов и файла заголовка, а также файлов прокси-сервера или заглушки на языке C, файла идентификатора интерфейса, файла данных DLL и файла заголовка. Дополнительные сведения см. в разделе "Компиляция MIDL".
  • В зависимости от выбранного метода маршалинга напишите файл определения модуля (DEF), скомпилируйте и свяжите все созданные MIDL-файлы в одну библиотеку прокси-сервера и зарегистрируйте интерфейс в системном реестре или зарегистрируйте библиотеку типов. Дополнительные сведения см. в статье о загрузке и регистрации библиотеки типов и создании и регистрации библиотеки DLL прокси-сервера.

Анатомия файла IDL

COM-клиенты и серверы

Правила проектирования интерфейса

Модель COM