Поделиться через


Абстрактные модели данных

Каждое приложение и каждая операционная система имеют абстрактную модель данных. Многие приложения не предоставляют эту модель данных явным образом, но модель определяет способ написания кода приложения. В 32-разрядной модели программирования (называемой моделью ILP32) типы данных целочисленного, длинного и указателя имеют длину 32 бита. Большинство разработчиков использовали эту модель, не осознавая этого. Для истории API Win32 это было допустимым (хотя и не обязательно безопасным) предположением.

В 64-разрядной версии Windows такое предположение о четности в размерах типов данных недопустимо. Создание всех типов данных длиной 64 бита приведет к пустой трате места, так как большинству приложений не требуется увеличенный размер. Однако приложениям требуются указатели на 64-разрядные данные, а также возможность иметь 64-разрядные типы данных в выбранных случаях. Эти соображения привели к выбору абстрактной модели данных под названием ТОО64 (или P64). В модели данных ТОО64 только указатели расширяются до 64 бит; все остальные базовые типы данных (целочисленные и длинные) остаются в длину 32 бита.

Изначально большинство приложений, работающих в 64-разрядной версии Windows, были перенесены из 32-разрядной версии Windows. Это цель, чтобы один и тот же источник, тщательно написанный, должен работать как в 32-, так и в 64-разрядной версии Windows. Определение модели данных не упрощает эту задачу. Однако первым шагом является обеспечение того, чтобы модель данных влияла только на типы данных указателей. Второй шаг — определение набора новых типов данных, которые позволяют разработчикам автоматически масштабировать данные, связанные с указателем. Это позволяет данным, связанным с указателями, изменять размер, так как размер указателя изменяется с 32 до 64 бит. Базовые типы данных по-прежнему имеют длину 32 бита, поэтому размер данных на диске, данных, совместно используемых по сети, или данных, совместно используемых с помощью файлов, сопоставленных в памяти, не изменяется. Это избавляет разработчиков от больших усилий, связанных с переносом 32-разрядного кода в 64-разрядную версию Windows.

Эти новые типы данных были добавлены в файлы заголовков API Windows. Поэтому вы можете приступить к использованию новых типов прямо сейчас. Дополнительные сведения см. в разделе Новые типы данных.