抽象データ モデル
すべてのアプリケーションとすべてのオペレーティング システムには、抽象データ モデルがあります。 多くのアプリケーションでは、このデータ モデルを明示的に公開しませんが、モデルはアプリケーションのコードの記述方法をガイドします。 32 ビット プログラミング モデル (ILP32 モデルと呼ばれます) では、整数、long、およびポインターのデータ型の長さは 32 ビットです。 ほとんどの開発者は、このモデルを認識せずに使用しています。 Win32 API の履歴では、これは有効な (必ずしも安全ではないが) 想定されていました。
64 ビット Windows では、このデータ型サイズのパリティの前提は無効です。 ほとんどのアプリケーションではサイズを増やす必要がないため、すべてのデータ型を 64 ビット長にすることで領域が無駄になります。 ただし、アプリケーションには 64 ビット データへのポインターが必要であり、選択したケースでは 64 ビットデータ型を持つ機能が必要です。 これらの考慮事項により、LLP64 (または P64) と呼ばれる抽象データ モデルが選択されました。 LLP64 データ モデルでは、ポインターのみが 64 ビットに拡張されます。他のすべての基本データ型 (整数と長) は、32 ビットの長さのままです。
最初は、64 ビット Windows で実行されるほとんどのアプリケーションは、32 ビット Windows から移植されます。 これは、慎重に記述された同じソースを、32 ビットと 64 ビットの両方の Windows で実行することが目標です。 データ モデルを定義しても、このタスクは簡単ではありません。 ただし、データ モデルがポインター データ型にのみ影響を与えるのを確認することが最初の手順です。 2 番目の手順では、開発者がポインター関連のデータのサイズを自動的に設定できるようにする新しいデータ型のセットを定義します。 これにより、ポインターに関連付けられているデータは、ポインター のサイズが 32 ビットから 64 ビットに変わると、サイズを変更できます。 基本的なデータ型の長さは 32 ビットのままであるため、ディスク上のデータのサイズ、ネットワーク経由で共有されるデータ、またはメモリ マップト ファイルを介して共有されるデータに変更はありません。 これにより、開発者は 32 ビット コードを 64 ビット Windows に移植する作業の多くが軽減されます。
これらの新しいデータ型が Windows API ヘッダー ファイルに追加されました。 そのため、新しい型の使用を開始できます。 詳細については、「 新しいデータ型」を参照してください。