時代に遅れないためのWin64用アプリケーション開発:64ビットコンピューティング最前線(3/3 ページ)
64ビット環境への理解も少しずつ深まってきた。今回は、64ビットWindows用アプリの開発について解説する。Win32との互換性などには注意してほしい。(特集:64ビットコンピューティング最前線)
32ビットとの互換性(WOW64)
Win64では、64ビットWindowsにネイティブで対応するアプリケーションのほか、Win32エミュレーションレイヤによって、従来の32ビットアプリケーションも実行させることができます。これを可能にしているのが「WOW64(Windows On Windows 64)」です。
WOW64はWin64の一部として実装されており、環境変数などもそれぞれのバージョンが用意されています。ただし、WOW64で対応するのはWin32アプリケーションのみで、Windows 3.1以前のWin16アプリケーションは動作させることができません。ですから、Win16のコードで書かれている一部のインストーラなどは実行できないことになります。
また、64ビットプラットホームでのデバイスドライバについて、こちらは64ビットで書かれていなければなりません(Table13)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
64ビットハードウェアは多くの32ビットアプリケーションと互換性がありますが、今のところ32ビットアプリケーションは、やはり32ビットハードウェア上で動作させるほうが若干スムーズに実行できることが多いようです(ただしx64システムでは、32ビットアプリケーションもネイティブで実行可能です)。とはいえ、64ビット環境で旧来の32ビット資産を生かせるというのはとてもありがたいことです。
32ビットと64ビットの共存のポイント
今後しばらくの間は、32ビットWindowsと64ビットWindowsアプリケーションは、それぞれが共存していくことになるでしょう。そうした状況において、両者の互換性を保つアプリケーションを開発するためにWindowsプログラマが心がけるべき点は、次のとおりです。
- ポインタをint、long、ULONG、DWORDなどにキャストしてはならない
- ポインタの型変換には、PtrToLongやPtrToUlong関数を使うこと
- Win64はLLP64のプログラミングデータモデルなので、引数によってポインタを得るような関数には注意する
- ポリモーフィックAPIに注意する
- 新しいWindowクラス関数および定義を使う
- size_t、HANDLE、LPARAM、WPARAM、LRESULTなど派生タイプのデータ型はプラットホームによってサイズが変わることに注意
Part 3で説明した64ビットプログラミングの一般的な注意点とこれらの点に気をつければ、32ビット環境も考慮した64ビットWindows対応アプリケーションの開発はだいぶ楽に行うことができるはずです。
将来もC/C++プログラミング言語を用いてWindowsアプリケーションを開発していこうと考えているプログラマにとって、このあたりはしっかりと押さえておきたいポイントです。
関連記事
- 特集:64ビットコンピューティング最前線
- あなたホントに64ビットを説明できますか?
- 64ビットへの移行で懸念される問題――基礎編
- 64ビット対応プロセッサを3分で理解する
- 64ビットになると何が変わる?――64ビットプログラミングのデータモデル
- 64ビットプログラミングのポイント
関連リンク
Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.