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

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

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

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

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