お世話になります。
Windows 7(64bit), Visual Studio 2010 Pro
他のプロセスのアドレス空間にメモリを割り付ける「VirtualAllocEx」というAPIがあり
ますが、これは64bit環境のOSでも正しく動作することが保障されているのでしょうか?
例えば、自分のアプリが32bit(WOW64)で、メモリを割り付ける対象のプロセスが64bitの
アプリの場合、逆に自分が64bitで対象のプロセスが32bitの場合。
このような場合に、VirtualAllocExで割り付けたメモリにWriteProcessMemoryや
ReadProcessMemoryでアクセスできるのでしょうか?
デバッグした感じでは、正常に動いているように見えるのですが、
たまたまうまくいっているのか、、、と不安になります。
何かご存知の方がいましたらアドバイスをお願い致します。
コンパイル等の設定は、64BITになっていますか?
PCに搭載しているCPUがAMDか,INTELかによっても設定が違うみたいです。
コンソールモードにして、CC.EXE/CL.EXE/LINKの実行画面でわからないでしょうか。
僕は、Visual Studio 2010を持ってないので詳しくはわかりません。
横から失礼します。
本題とはずれた部分についてですが、
> PCに搭載しているCPUがAMDか,INTELかによっても設定が違うみたいです。
これ、もう少し情報ありますか?
Intel、AMD両方の環境でVS使ってますが全く知らなかったので、何か見落としているのかと
不安になりました。
もしかしてIA-64 (要するにItanium) と 広義のAMD64 (Intel64も含んだ表現。x64やx86-64
と同義) のことだったり?
# 念のため確認。VirtualAllocExの挙動の話ではなくVisual Studioの設定の話ですよね。
> もしかしてIA-64 (要するにItanium) と 広義のAMD64 (Intel64も含んだ表現。x64や
> x86-64と同義) のことだったり?
そうです。
昔は、AMD64はAMD系のみだったと思います。
># 念のため確認。VirtualAllocExの挙動の話ではなくVisual Studioの設定の
> 話ですよね。
そうです。
VirtualAllocExうんぬんの前に、64bitの設定がきちんと確認しておきたいと思いまし
た。
ん?
なんか文章がおかしい(^^;
VirtualAllocExうんぬんの前に、64bitの設定がきちんと出来ているか確認しておきた
いと思いました。
です。(^^;
> > もしかしてIA-64 (要するにItanium) と 広義のAMD64 (Intel64も含んだ表現。x64や
> > x86-64と同義) のことだったり?
> そうです。
> 昔は、AMD64はAMD系のみだったと思います。
なるほど。すっきりしました。
IA-64でコンパイルした場合、x64プロセッサでは動きませんし、同様にx64バイナリはIA-64
プロセッサでは動かないのでここを間違えた場合は即分かるのではないかと思います。x86
バイナリはどちらでも動きますが。
さらに、Visual Studio 2010 Proの場合、IA-64用コンパイラは含まれていませんので、IA-
64とx64の設定間違いはほぼ気にしなくてよいかと。
# 元質問者様へ:
# 元々の質問に関しては分からないのでコメントできていません。
# 質問を乗っ取ったような形になってしまい申し訳ありません。