Маршалирование типов данных OLE
Чтобы упростить использование определённых типов данных автоматизации и OLE, а также некоторых системных дескрипторов, часто используемых в COM, доступны typedefs для этих типов данных и связанные вспомогательные функции. Это достигается путём импорта файлов Windows IDL и связывания с DLL-файлами OLE и автоматизации. Эти файлы автоматически устанавливаются в систему.
- Чтобы использовать тип данных BSTR в удаленных вызовах процедур, импортируйте файл wtypes.idl в файл определения интерфейса (IDL) и свяжите его с Oleaut32.lib при создании распределенного приложения. Это позволит вашим заглушкам использовать готовые вспомогательные функции BSTR_UserSize, BSTR_UserMarshal, BSTR_UserUnmarshalи BSTR_UserFree.
- Чтобы использовать другие типы данных автоматизации, такие как VARIANT и SAFEARRAY, или типы, использующие эти типы (например, DISPPARAMS и EXCEPINFO), импортируйте файл objidl.idl.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-разрядных платформ.