抽象数据模型
每个应用程序和每个作系统都有一个抽象数据模型。 许多应用程序不会显式公开此数据模型,但模型将引导应用程序代码的编写方式。 在 32 位编程模型中(称为 ILP32 模型),整数、长数据类型和指针数据类型长度为 32 位。 大多数开发人员都使用此模型,但未实现此模型。 对于 Win32 API 的历史,这是一个有效的(尽管不一定安全)假设。
在 64 位 Windows 中,数据类型大小的奇偶校验假设无效。 使所有数据类型的长度为 64 位会浪费空间,因为大多数应用程序不需要增加的大小。 但是,应用程序确实需要指向 64 位数据的指针,并且需要在所选情况下具有 64 位数据类型。 这些注意事项导致选择名为 LLP64(或 P64)的抽象数据模型。 在 LLP64 数据模型中,只有指针扩展到 64 位;所有其他基本数据类型(整数和长)保持 32 位的长度。
最初,在 64 位 Windows 上运行的大多数应用程序都将从 32 位 Windows 移植。 这是一个目标,同一源,精心编写,应在 32 位和 64 位 Windows 上运行。 定义数据模型不会使此任务更容易。 但是,确保数据模型仅影响指针数据类型是第一步。 第二步是定义一组新的数据类型,使开发人员能够自动调整其指针相关数据的大小。 这允许与指针关联的数据更改大小,因为指针大小从 32 位更改为 64 位。 基本数据类型的长度为 32 位,因此磁盘上的数据大小、通过网络共享的数据或通过内存映射文件共享的数据没有变化。 这可以减轻开发人员将 32 位代码移植到 64 位 Windows 所涉及的大部分工作。
这些新数据类型已添加到 Windows API 头文件。 因此,现在可以开始使用新类型。 有关详细信息,请参阅 新数据类型。