次の方法で共有


OLE データ型のマーシャリング

特定のオートメーションおよび OLE データ型、および COM で頻繁に使用される一部のシステム ハンドルを簡単に使用できるようにするために、Windows IDL ファイルをインポートし、OLE および Automation DLL ファイルにリンクすることで、これらのデータ型とそれに関連するヘルパー関数の typedef を使用できます。 これらのファイルは、システムに自動的にインストールされます。

  • リモート プロシージャ 呼び出しで BSTR データ型を使用するには、wtypes.idl ファイルをインターフェイス定義 (IDL) ファイルにインポートし、分散アプリケーションのビルド時に Oleaut32.lib にリンクします。 これにより、スタブで既製のヘルパー関数BSTR_UserSize、BSTR_UserMarshalBSTR_UserUnmarshalBSTR_UserFree使用できるようになります。
  • VARIANTSAFEARRAY などの他の Automation データ型、またはそれらの型 (DISPPARAMSEXCEPINFO など) を使用する型を使用するには、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 にリンクして、1 台のコンピューター上のプロセス間通信でこれらのハンドルを使用します。

詳細については、「特定の 32 ビットまたは 64 ビット プラットフォームwire_marshal属性type_UserSize関数type_UserMarshal関数type_UserUnmarshal関数type_UserFree関数、およびターゲット スタブ」を参照してください。