kkamegawaの購入記録

漫画、小説、映画や買ったものの記録をつらつらしていきます。昔は一部技術情報もありました…

x64 Windows対応時に気になること

 Microsoftからx64Windows XPがリリースされたことに伴い、x64Windowsのサポート技術文書もいくつか公開されています。ユーザが日常使おうとすると、とたんに困るであろうところとなると
  • いくつかの主要なコンポーネントが32bit版と64bit版二つある(IE,IME)。既存のATOK 2005を入れたとしても、x64コードで動くアプリケーションからは使えない。
  • 64bitコードから32bitコードの呼び出しができないので、IEプラグインは作り直し(Flash,Adobe Reader,google toolbarなどなど)。Adobe Readerに関しては、別ウィンドウでIA-32用を起動することができる。
  • アンチウィルスソフトがほとんど用意されていない。
 では、開発者は何に気をつければいいでしょう?ポインタのサイズなどのプログラムから見えやすいところ以外の、Windowsのシステムに関わるようなところです。たとえば、16bitから32bitになって、システムファイルが入る場所が%WINDIR%\systemから%WINDIR%\system32になったというたぐいの変更です。  Microsoftのサポート技術文書64 ビット版の Windows Server 2003 と Windows XP での 32 ビット プログラムの互換性についてにまとめられています。ドライバや単独のアプリケーション、レジストリはわかりやすいところですが、興味深いのは以下の二点。
  • MMC(管理コンソール)から32bit版のMMCスナップインを動かす場合
  • .NET Framework 2.0でコンパイルされたコードをx64で動かして、その中から32bit版のマネージドDLLをP/Invokeで呼び出した場合。COM経由の呼び出しも同じかな。
 前者に関しては前述のサポート技術情報896456のリンクにRunning 32-bit and 64-bit Snap-ins in 64-bit Windowsとして載っています。起動するときに"mmc -32"というオプションをつければ32bitモードのスナップインが動作して、"mmc -64"と起動すると、64bitのスナップインが使用できるそうです。なので、メニューなんかに登録するときは"mmc -32 hogehoge.msc"って登録すればよいようです。って、32bit版のmmcスナップインを登録するときは自動的にやってくれないの?  問題は次の.NET Framework 2.0マネージドコードを動かした場合(ただし、P/Invokeで32bitコード呼び出しがあり)。試してみたいけれど、うちにはx64のシステムがないorz。P/Invokeで32bitコードを呼び出した瞬間に例外が出るのかなぁ…。私が.NET使ってもP/Invokeが必要なアプリケーションばかり書くから、興味あるところです。