私はまだこの質問に対する答えを見つけようとしています。正しい方向に少しずつ進めていただければ幸いです (OLE の経験がほとんどないため)。RevokDragDrop を呼び出した後に同様のエラーが発生した人はいますか?
ありがとう、
マーシャリングされたインターフェイスを別のアパートメントに渡しました。メソッドを呼び出そうとすると、これが明らかになり、呼び出しはこのエラーで中止されましたRPC_E_WRONG_THREAD
。
複数のスレッドでインターフェイス ポインターを使用する場合は注意が必要です。別のスレッドから既に保持しているポインターを使用する場合は、許可されているかどうか、またはCoMarshalInterThreadInterfaceInStream
関数などでそのような使用のためにポインターを明示的にマーシャリング/マーシャリング解除する必要があるかどうかを検討する必要があります。
問題の原因はGetProp
/ SetProp
API の使用にあると思います。これらは、途中で必要なマーシャリングなしで生のポインターをそのまま保存します。