Маршалинг типов данных OLE

Чтобы упростить использование определенных типов данных службы автоматизации и OLE, а также некоторых системных дескрипторов, часто используемых в COM, для этих типов данных и связанных с ними вспомогательных функций можно использовать путем импорта IDL-файлов Windows и связывания с DLL-файлами OLE и автоматизации. Эти файлы автоматически устанавливаются в систему.

  • Чтобы использовать тип данных BSTR в удаленных вызовах процедур, импортируйте файл wtypes.idl в файл определения интерфейса (IDL) и при создании распределенного приложения создайте ссылку на Oleaut32.lib. Это позволит вашим заглушкам использовать готовые вспомогательные функции BSTR_UserSize, BSTR_UserMarshal, BSTR_UserUnmarshal и BSTR_UserFree.
  • Чтобы использовать другие типы данных службы автоматизации, такие как VARIANT и SAFEARRAY, или типы, использующие эти типы (например, DISPPARAMS и EXCEPINFO), импортируйте файл objidl.idl в IDL-файл и создайте ссылку на oleaut32.lib во время сборки. Это позволит вам использовать соответствующие вспомогательные процедуры.
  • Чтобы использовать типы данных OLE (например, CLIPFORMAT, SNB, STGMEDIUM, ASYNC_STGMEDIUM) или системные дескрипторы (например, HMETAFILE_PICT, HENHMETAFILE, HMETAFILE, HBITMAP, HPALETTE и HGLOBAL), импортируйте файл objidl.idl в файл определения интерфейса и создайте ссылку на ole32.lib во время сборки.
  • Следующие дескрипторы OLE также определяются с атрибутом [wire_marshal] , но только как дескрипторы на компьютере, так как в настоящее время они не могут использоваться в удаленных вызовах процедур к другим компьютерам: HWND, HMENU, HACCEL, HDC, HFONT, HICON, HBRUSH. Импортируйте файл objidl.idl в IDL-файл и создайте ссылку на ole32.lib во время сборки, чтобы использовать эти дескрипторы при взаимодействии между процессами на одном компьютере.

Дополнительные сведения см . в разделах Атрибут wire_marshal, Функция type_UserSize, Функция type_UserMarshal, Функция type_UserUnmarshal, Функция type_UserFree и Нацеливание заглушек для конкретных 32-разрядных или 64-разрядных платформ.