C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 異なるCランタイムを使用したアプリ間のWM_COPYDATA


(過去ログ 83 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■49242 / inTopicNo.1)  異なるCランタイムを使用したアプリ間のWM_COPYDATA
  
□投稿者/ ライヒ (1回)-(2010/04/27(Tue) 22:26:07)

分類:[C/C++] 

VC6で作ったEXEと、VC8で作ったEXEの間で、
WM_COPYDATAを使用したプロセス間通信をしようと思っています。
(元々VC6で作られていた2つのEXEのうち、片方のみVC8へアップデートという形です。)

ランタイムが異なった場合に、特に注意すべき点等ありますでしょうか。


引用返信 編集キー/
■49246 / inTopicNo.2)  Re[1]: 異なるCランタイムを使用したアプリ間のWM_COPYDATA
□投稿者/ 渋木宏明(ひどり) (1316回)-(2010/04/28(Wed) 00:17:50)
渋木宏明(ひどり) さんの Web サイト
> ランタイムが異なった場合に、特に注意すべき点等ありますでしょうか。

WM_COPYDATA でどんなやりとりをするのかで異なります。

引用返信 編集キー/
■49250 / inTopicNo.3)  Re[2]: 異なるCランタイムを使用したアプリ間のWM_COPYDATA
□投稿者/ ライヒ (2回)-(2010/04/28(Wed) 10:05:28)
> WM_COPYDATA でどんなやりとりをするのかで異なります。

VC8のEXEから「構造体+データ」を送信し、VC6のEXEでこれを受信するという形です。
・構造体には、char型、long型、HANDLE型、HWND型が含まれています。
・データは、ヒープに割り当てた領域です。


引用返信 編集キー/
■49254 / inTopicNo.4)  Re[3]: 異なるCランタイムを使用したアプリ間のWM_COPYDATA
□投稿者/ 渋木宏明(ひどり) (1317回)-(2010/04/28(Wed) 11:17:56)
渋木宏明(ひどり) さんの Web サイト
> ・構造体には、char型、long型、HANDLE型、HWND型が含まれています。

構造体を渡しているなら、アライメントの整合性に注意しないといけないですね。

アライメント情報を動的に引き渡すことは容易ではないので、双方のプログラムであらかじめアライメントがおなじになるように定義しておくのがよくあるパターンだと思います。

> ・データは、ヒープに割り当てた領域です。

WM_COPYDATA の場合、文字通り COPYDATASTRUCT で示したデータがシステムによってまるっとコピーして渡されるので、送信データをどうやって確保したかはあまり問題にならないです。
引用返信 編集キー/
■49255 / inTopicNo.5)  Re[4]: 異なるCランタイムを使用したアプリ間のWM_COPYDATA
□投稿者/ ライヒ (4回)-(2010/04/28(Wed) 11:43:36)
> 構造体を渡しているなら、アライメントの整合性に注意しないといけないですね。

構造体が定義されたヘッダを見る限り、アライメントの制御はありませんでした。
VC8のEXE側で、VC6のデフォルトに合わせるようにします。

> WM_COPYDATA の場合、文字通り COPYDATASTRUCT で示したデータがシステムによってまるっとコピーして渡されるので、送信データをどうやって確保したかはあまり問題にならないです。

安心しました。


この方針で開発していきたいと思います。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -