Marshallen von OLE-Datentypen
Um die Verwendung bestimmter Automatisierungs- und OLE-Datentypen sowie einiger häufig in COM verwendeter Systemhandles zu vereinfachen, stehen Typedefs für diese Datentypen und die zugehörigen Hilfsfunktionen zur Verfügung, indem sie Windows-IDL-Dateien importieren und eine Verknüpfung mit den OLE- und Automation-DLL-Dateien erstellen. 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 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 SAFEARRAYoder 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 sie zur Buildzeit mit oleaut32.lib. Dadurch können Sie die entsprechenden Hilfsroutinen verwenden.
- Um OLE-Datentypen (z. B. CLIPFORMAT, HYPERLINK, STGMEDIUM, ASYNC STGMEDIUM) oder Systemhandles (z. B. _ HMETAFILE _ PICT, HENHMETAFILE, HMETAFILE, HBITMAP, HPALETTE und HGLOBAL) zu verwenden, importieren Sie die Datei objidl.idl zur Buildzeit in die Schnittstellendefinitionsdatei und verknüpfen sie mit der Datei ole32.lib.
- Die folgenden OLE-Handles werden auch mit dem [ Wire _ ] Marshal-Attribut definiert, jedoch nur als Handles innerhalb eines Computers, da sie derzeit nicht in Remoteprozeduraufrufen an andere 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 bei der prozessübergreifenden Kommunikation auf einem einzelnen Computer zu verwenden.
Weitere Informationen finden Sie unter Das Wire _ Marshal-Attribut,der Typ _ UserSize-Funktion,der Typ _ UserMarshal-Funktion,der Typ _ UserUnmarshal-Funktion,der Typ _ UserFree-Funktionund Zielstubs für bestimmte 32-Bit- oder 64-Bit-Plattformen.