64bitOSにおけるグローバルメモリの扱いについて
Posted: 2011年3月01日(火) 18:46
お世話になっております、ねこです。
現在の業務にて以下のような構成で開発をしております。
開発環境:WindowsXP 32bit
コンパイラ:VisualStudio 2008(C++/C#)
プログラムA(C#)
プログラムB(C++(MFC))
どちらもダイアログベースの実行ファイルです。
Bは直接起動はせず、Aから起動されます。
その時コマンド引数にAのウィンドウハンドルを渡し、
Bはそれを受け取り自身のウィンドウハンドルをAに対しSendMessage( Aハンドル, ... )で送信します。
これにより相互にウィンドウハンドルを保持した状態になります。
A,B共に起動後は何もせず、何かしらSendMessageでメッセージが来たら対応する処理を実行します。
大量のデータを扱う場合もあり、その際は送信元でグローバルメモリにデータを保持し処理IDとメモリアドレスを送信し、
受信先でメモリアドレスのデータを参照するという形になっています。
しかし、実際にこれらが実行される環境が64bitOSという話になり
ウィンドウハンドルやグローバルメモリのアドレスがこのままでいいのか不安になっています。
64bit環境自体が無く、動作確認も出来ないためどのように対応したらいいのか分からない状態です。
32bit環境でコンパイルしたアプリケーションでもメモリアドレスに関係するものなどは64ビットアドレス用に8バイト確保するよう修正する必要があるのでしょうか?
漠然とした質問になりましたが、回答をお願いします。
現在の業務にて以下のような構成で開発をしております。
開発環境:WindowsXP 32bit
コンパイラ:VisualStudio 2008(C++/C#)
プログラムA(C#)
プログラムB(C++(MFC))
どちらもダイアログベースの実行ファイルです。
Bは直接起動はせず、Aから起動されます。
その時コマンド引数にAのウィンドウハンドルを渡し、
Bはそれを受け取り自身のウィンドウハンドルをAに対しSendMessage( Aハンドル, ... )で送信します。
これにより相互にウィンドウハンドルを保持した状態になります。
A,B共に起動後は何もせず、何かしらSendMessageでメッセージが来たら対応する処理を実行します。
大量のデータを扱う場合もあり、その際は送信元でグローバルメモリにデータを保持し処理IDとメモリアドレスを送信し、
受信先でメモリアドレスのデータを参照するという形になっています。
しかし、実際にこれらが実行される環境が64bitOSという話になり
ウィンドウハンドルやグローバルメモリのアドレスがこのままでいいのか不安になっています。
64bit環境自体が無く、動作確認も出来ないためどのように対応したらいいのか分からない状態です。
32bit環境でコンパイルしたアプリケーションでもメモリアドレスに関係するものなどは64ビットアドレス用に8バイト確保するよう修正する必要があるのでしょうか?
漠然とした質問になりましたが、回答をお願いします。