Modelos de dados abstratos
Cada aplicativo e cada sistema operacional tem um modelo de dados abstrato. Muitos aplicativos não expõem explicitamente esse modelo de dados, mas o modelo orienta a maneira como o código do aplicativo é escrito. No modelo de programação de 32 bits (conhecido como modelo ILP32), os tipos de dados inteiro, longo e ponteiro têm 32 bits de comprimento. A maioria dos desenvolvedores usou esse modelo sem perceber. Para o histórico da API Win32, essa foi uma suposição válida (embora não necessariamente segura) a ser feita.
No Windows de 64 bits, essa suposição de paridade em tamanhos de tipo de dados é inválida. Tornar todos os tipos de dados de 64 bits de comprimento desperdiçaria espaço, pois a maioria dos aplicativos não precisa do tamanho aumentado. No entanto, os aplicativos precisam de ponteiros para dados de 64 bits e precisam da capacidade de ter tipos de dados de 64 bits em casos selecionados. Essas considerações levaram à seleção de um modelo de dados abstrato chamado LLP64 (ou P64). No modelo de dados LLP64, somente os ponteiros se expandem para 64 bits; todos os outros tipos de dados básicos (inteiro e longo) permanecem com 32 bits de comprimento.
Inicialmente, a maioria dos aplicativos executados no Windows de 64 bits terá sido portada do Windows de 32 bits. É uma meta que a mesma origem, cuidadosamente gravada, deve ser executada no Windows de 32 e 64 bits. Definir o modelo de dados não facilita essa tarefa. No entanto, garantir que o modelo de dados afete apenas tipos de dados de ponteiro é a primeira etapa. A segunda etapa é definir um conjunto de novos tipos de dados que permitem aos desenvolvedores dimensionar automaticamente seus dados relacionados ao ponteiro. Isso permite que os dados associados aos ponteiros alterem o tamanho conforme o tamanho do ponteiro muda de 32 bits para 64 bits. Os tipos de dados básicos permanecem com 32 bits de comprimento, portanto, não há nenhuma alteração no tamanho dos dados no disco, dados compartilhados em uma rede ou dados compartilhados por meio de arquivos mapeados em memória. Isso alivia os desenvolvedores de grande parte do esforço envolvido na portabilidade de código de 32 bits para o Windows de 64 bits.
Esses novos tipos de dados foram adicionados aos arquivos de cabeçalho da API do Windows. Portanto, você pode começar a usar os novos tipos agora. Para obter mais informações, consulte Os novos tipos de dados.