kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Win32コードをx64 Windowsで動かすと…

アプリケーションエラーが発生するかもねというお話。
64 ビット バージョンの Windows Server 2003 を実行しているコンピューター上または Windows XP Professional x64 Edition を実行しているコンピューターで 32 ビット プログラムを実行すると、エラーが発生する可能性があります。(機械翻訳)
Errors may occur when you run a 32-bit program on a computer that is running a 64-bit version of Windows Server 2003 or on a computer that is running Windows XP Professional x64 Edition(英語)
WOW64では正当なアドレスなんだけれど、x32ではあり得ないアドレス(0xC0000000以降)だった場合、WinProcでエラーになってしまうとのこと。0xC000000だったら別の処理に行ってしまうため…らしい。
0xC0000000は4GTを行った後のカーネルアドレスでもあるし、その辺が原因なんだろうか。
hotfixがあるので、入手した方がいいそうです。これが原因でx64 Windows上でWin32プログラムが不可思議なエラー起こしたり、出るはずのメッセージボックスが表示されなかったという経験がある人はどうぞ。