共有メモリインターフェイス(SMI)を持つ32ビットプログラムを実行するWindows 7(64ビット)のコードを記述する必要があります。より正確には、私がコーディングしているプログラムはSMIに書き込み、32ビットプログラムはこのSMIから読み込みます。Windows 64ビットと32ビットの間の共有メモリインターフェイス
私が最初に抱える問題は、私が32ビットプログラムのソースコードにアクセスできないということです。解決できない問題です。第2の問題は、SMIが、書き込まれた情報のアドレスを記憶することである。この尖ったは、以下のコードを使用して、ベースポインタとして格納されている:
gpSharedBlock->m_pData[uiDataPointer] = (char __based(gpSharedBlock)*)pData;
はpDataを我々が記述しているデータへのポインタであり、そしてgpSharedBlock-> m_pData [i]が格納されているI ^番目の要素を指しました。
恐らくここからあなたは既に問題に気付いています。 W32のポインタは4バイトであり、W64のポインタは8バイトである。次に、格納された値が64ビットのポインタであるため、32ビットのプログラムによって最後に読み取られた値は、望ましい値ではありません。
私の質問は、実行中のプログラムが正しい情報を読み込むように、64ビットアドレスを32ビットアドレスに変換する方法はありますか?
私はWOW64について読んでいますが、私はW32プログラムがその下で動作していると思いますが、それをどのように活用するのか分かりません。何か案は?
+1 –