Marshallen von OLE-Datentypen

Um die Verwendung bestimmter Automation- und OLE-Datentypen sowie einiger häufig in COM verwendeten Systemhandles zu vereinfachen, sind Typedefs für diese Datentypen und die zugehörigen Hilfsfunktionen verfügbar, indem Sie Windows IDL-Dateien importieren und mit den OLE- und Automation-DLL-Dateien verknüpfen. Diese Dateien werden automatisch auf Ihrem System installiert.

  • Um den BSTR-Datentyp in Remoteprozeduraufrufen zu verwenden, importieren Sie die Datei wtypes.idl in Ihre IDL-Datei (Interface Definition), und verknüpfen Sie beim Erstellen Ihrer verteilten Anwendung mit Oleaut32.lib. Dadurch können Ihre Stubs die vorgefertigten Hilfsfunktionen BSTR_UserSize, BSTR_UserMarshal, BSTR_UserUnmarshal und BSTR_UserFree verwenden.
  • Um andere Automation-Datentypen wie VARIANT und SAFEARRAY oder Typen zu verwenden, die diese Typen verwenden (z. B. DISPPARAMS und EXCEPINFO), importieren Sie die Datei objidl.idl in Ihre IDL-Datei und verknüpfen Sie zur Erstellungszeit mit oleaut32.lib. Dadurch können Sie die entsprechenden Hilfsroutinen verwenden.
  • Um OLE-Datentypen (z. B. CLIPFORMAT, SNB, STGMEDIUM, ASYNC_STGMEDIUM) oder Systemhandles (z. B. HMETAFILE_PICT, HENHMETAFILE, HMETAFILE, HBITMAP, HPALETTE und HGLOBAL) zu verwenden, importieren Sie die Datei objidl.idl in Ihre Schnittstellendefinitionsdatei und verknüpfen Sie zur Buildzeit mit ole32.lib.
  • Die folgenden OLE-Handles werden auch mit dem Attribut [wire_marshal] definiert, jedoch nur als Handles innerhalb eines Computers, da sie derzeit nicht in Remoteprozeduraufrufen anderer Computer verwendet werden können: HWND, HMENU, HACCEL, HDC, HFONT, HICON, HBRUSH. Importieren Sie die Datei objidl.idl in Ihre IDL-Datei, und verknüpfen Sie sie zur Buildzeit mit ole32.lib, um diese Handles in der Interprozesskommunikation auf einem einzelnen Computer zu verwenden.

Weitere Informationen finden Sie unter The wire_marshal Attribute, The type_UserSize Function, The type_UserMarshal Function, The type_UserUnmarshal Function, The type_UserFree Function, and Targeting Stubs for Specific 32-Bit- oder 64-Bit-Plattformen.