オートメーション サーバーできないプロセス境界を越えてポインター画像オブジェクトの IPictureDisp 実装へ渡す

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:150034
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
CPictureHolder クラスは、MFC でラップする図のオブジェクトを実装するオートメーション サーバーは、プロセス境界を越えて画像オブジェクトの IPictureDisp 実装にポインターを渡すしよう場合を失敗します。
原因
IPictureDisp は、プロセス境界を越えてマーシャリングできませんが、図のオブジェクトのメソッドへのアクセスを取得します。 IPictureDisp DISPID_PICT_RENDER、図の Render メソッドへのアクセスをサポートするたとえば、オブジェクト。 Render メソッドは最初のパラメーターとして、デバイス コンテキストへのハンドルを受け取ります。 デバイス コンテキストのハンドルをマーシャリングできません。

ディスパッチ インターフェイスをマーシャリング コード、IDispatch を使用してマーシャリングは通常は図オブジェクトに IMarshal 特にそのマーシャリングに失敗する原因に実装されています。
状況
これは仕様によるものです。
詳細
Visual C++ では、ClassWizard では、LPPICTUREDISP のメソッドの戻り値型を選択できます。 このメソッドは、IPictureDisp を返す可能性がありますインターフェイスを CPictureHolder::GetPictureDispatch を呼び出して取得します。 ただし、このメソッドが別のプロセスで実行されているコントローラーによって呼び出されるのメソッドは失敗し、E_FAIL のエラー コードを返します。

図のオブジェクトが失敗する IPictureDisp のマーシャリング、ため問題も発生複数スレッドのアパートメント モデル オブジェクト内のスレッドの境界を越えて IPictureDisp インターフェイスを取得しようとしたときします。
関連情報
マーシャリングの詳細については、ください"内部 OLE、"Kraig Brockschmidt、第 6 章「のローカル/リモート透過性、」によって、2 番目のエディションによって発行された Microsoft キーを押します。

警告: この記事は自動翻訳されています

プロパティ

文書番号:150034 - 最終更新日: 03/01/2014 02:58:08 - リビジョン: 3.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbtshoot kbbitmap kbautomation kbprb kbctrl kbmt KB150034 KbMtja
フィードバック