Маршалинг. Использование маршалера Automation

   
На этом шаге мы рассмотрим маршалинг Automation.

   
Маршалер Automation - это СОМ-сервер (oleaut32.dll), предоставляющий услуги по
маршалингу в СОМ-технологии, известной как Automation (раньше ее называли OLE Automation).
Она позволяет взаимодействовать с СОМ-компонентами клиентам, написанным на отличных от C++ языках.
Маршалер Automation реализован в СОМ-интерфейсе IDispatch (подробнее о нем -
на следующих шагах). Чтобы пользоваться им, не требуется создавать диспетчерский интерфейс - достаточно указать,
что интерфейсы Вашего компонента используют маршалер Automation, задав их IDL-атрибутом
oleautomation, как показано ниже:

[
  oleautomation,
  object,
  uuid(A84DA762-6486-11D3-9347-0080C7FA0C3E),
  helpstring("IHello Interface"),
  pointer_default(unique) 
]

interface IHello  :  IUnknown
{
  [ propget,   helpstring("property String") ] HRESULT
  String([out, retval] BSTR *pVal);
};

   
Для реализации взаимодействия между различными языками в Automation определен стандартный набор типов
данных, которые можно поместить в объединение (union) VARIANT. Пользуясь маршалером Automation,
Вы должны употреблять только допустимые в ней типы данных. Тип данных BSTR в предыдущем фрагменте
кода - это спользуемый Automation строковый тип.

   
Маршалер Automation не столь эффективен по сравнению с кодом стандартного маршалинга, созданного
компилятором MIDL.

   
На следующем шаге мы рассмотрим специальный маршалинг.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий