32Bitシステムの64Bit化 – プログラミング – Home

32Bitシステムの64Bit化
 
通知
すべてクリア

[解決済] 32Bitシステムの64Bit化


え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

VC++8.0で開発したWindows Vista/XP/Server 2008で動作保証している32bitのシステム
があります
これを、64BitOS(Windows 7/Server2008R2)で動作保証したいと思います
ここで、構成品目すべてを64Bitでビルドするのは不可能(ソースのないスタティック
ライブラリ等があるため)です
そこで、一部のドライバを64Bit化し、大部分を32bitのままでいけないか?
と検討しています
このときいずれかの方法で、64Bitアプリと32Bitアプリで情報のやり取りができなけれ
ばなりません。
以下のようなことは可能でしょうか?

1)64Bitのアプリケーションと32BitのアプリケーションでSocket通信が可能か?
2)64Bitのアプリケーションと32Bitのアプリケーションで共有メモリが使用できる
か?
3)そのほかで64Bitアプリと32Bitアプリでデータを受け渡すことが可能な方法があり
ますか?できれば、同期がとれる方法だとありがたいです。

最悪の場合は、64Bitアプリと32BitアプリでメッセージをXMLのファイルにして、お互い
に監視する方法でも良いとは考えています


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

WoW64 で 32bit App をそのまま動作させるのではだめなの?


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

tetrapodさま

WoW64ではデバイスドライバが動作しませんよね
よって、デバイスを使用している部分は64Bitで作成しなければならないと思っておりま

ライセンスの管理にUSBのドングルを使用しているのですが、これが動作しませんでした
64BitのSDKにかえる必要があるので、このライセンス判定をしている部分を64Bitの実行
ファイルにして、32Bitのシステムと何らかの方法で通信させたいと思っております


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> 1)64Bitのアプリケーションと32BitのアプリケーションでSocket通信が可能か?

もちろん可能です。

> 2)64Bitのアプリケーションと32Bitのアプリケーションで共有メモリが
> 使用できるか?

メモリマップドファイルのことであれば使用できるでしょう。

> 3)そのほかで64Bitアプリと32Bitアプリでデータを受け渡すことが可能な方法が
ありますか?

COM も限定的ながら使用できるようです。

こんな資料がありました。
http://msdn.microsoft.com/en-us/library/aa384203(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb427430(VS.85).aspx


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

何をどこまで [自分で実装している] のかわからないんだが・・・

32bit OS のデバイスドライバは 64bit OS では当然動作しない。
なのでドングルのデバイスドライバは作り直す必要がある。
で、この [ドングルのデバイスドライバ] も自作しているわけ?
それともこのドライバはドングルメーカーから提供を受けているわけ?

ドングルメーカーが 64bit OS 用ドライバを提供してさえいれば、ないしは、
当該ドングルの 64bit OS 用ドライバを自作できれば、
Wow64 の thunk-layer がいろいろ小細工してくれて、その 64bit ドライバを
32bit App から呼び出せるようにしてくれる。
なので、自作アプリの EXE/DLL レベルでは何一つ変更する必要はない。

お客様の便利を考えてインストーラは作り直すといいかもしれないけど・・・


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

aetosさん

回答ありがとうございます
Socket通信ができれば怖いものはないです
COMはネットで調べてだめだと思っていました
今回のシステムのでは解決になりませんが、別のシステムでCOMで構成しているものがあ
るので調査してみます

tetrapodさん

あいまいな表現でしません
ドングルメーカーからドライバとSDK(DLL)が配布されております
んで、ドライバというよりも、SDK(DLL)をリンクするために64Bitに対応する必要が
あると思っておりました
>64bit ドライバを32bit App から呼び出せるようにしてくれる
は知らなかったのですが、ドングルメーカーが64Bitのドライバを32BitのDLLから呼び出
していて、その32BitのDLLをアプリがリンクすればよいとのことですね
”thunk-layer”について調べてみます
情報ありがとうございました


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

”thunk-layer”について簡単に調べてみましたが、NT系のOSでは持っていないようです
Windows9Xの際に、32Bitと16BitでOS自体を構成するための仕組みのようですが、間違っ
ていますか?


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

Wow64 の 32bit-64bit 変換機構を thunk と呼ぶのか呼ばないのかは
意見が分かれているようだ・・・

Wikipedia では「 Thunk は無い 」と言い切っている
http://ja.wikipedia.org/wiki/WOW64

msdn 関係者が thunk と言っている
http://blogs.msdn.com/tsmatsuz/archive/2009/04/16/64-bit-wow-32bit-system-file-
registry.aspx

まあ何にせよ、普通の [アプリケーションプログラミング] のレベルであれば
・32bit アプリケーションは、本来直接 64bit デバイスドライバを呼べない
・Wow64 と呼ばれる Win64 の機能が、間接的に呼び出す機構を提供している
ので Win64 上でもごく普通に 32bit app が動作する。

Win32 の 32bit app が発行する CreateFile や WriteFile なんかも
結局 wow64 で 64bit な呼び出しに変換されているわけだ。

まずはドングルのメーカーに問い合わせてみるべし。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 24年前
投稿: 312
 

うちもドングルを使っているので試してみました。
メーカーのHPから64bit用のドライバをダウンロードし
Windows7Ultimate(64bit)で試したところ
ドライバのインストールができました。

既存の32bit用の簡単なプログラム(ドングルの情報を読み書きするもの)を試したところ
動作することを確認できました。

おそらく tetrapod さんが書かれている何かが(よくわからないけど)
うまくやっているのだろうと思います。

目的が64bit化なら別ですが
64bitドライバがあれば、何もしなくても動く可能性があるということで
え~いちさんも、まずは試してみてはいかがですか。


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

tetrapodさん、kuさん

情報ありがとうございます
ドングルメーカーには問い合わせを行います
tetrapodさんの説明と、kuさんの事例からメーカーが考えてくれているかもしれません

製品寿命を考えて、完全に64bitを意向する必要はないのでメーカーから供給されるもの
だけで済めば助かります


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

メーカーから64Bitのドライバをダウンロードして確認してみました
32Bitのアプリケーションの修正を全くしないままで動作しました


返信引用
え~いち
 え~いち
(@え~いち)
ゲスト
結合: 19年前
投稿: 78
Topic starter  

なぜ動作したのだろう???と調べたところ
64Bitでドライバを開発する際に、32Bitから呼び出されることを考慮して開発できるよ
うです

DeviceIoControl()/IoIs32bitProcess()当たりの関数で調べると情報が出ています


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました