Modelli di dati astratti
Ogni applicazione e ogni sistema operativo ha un modello di dati astratta. Molte applicazioni non espongono esplicitamente questo modello di dati, ma il modello guida il modo in cui viene scritto il codice dell'applicazione. Nel modello di programmazione a 32 bit (noto come modello ILP32), i tipi di dati integer, long e puntatore sono 32 bit di lunghezza. La maggior parte degli sviluppatori ha usato questo modello senza renderlo conto. Per la cronologia dell'API Win32, questo è stato un presupposto valido (anche se non necessariamente sicuro) da fare.
In Windows a 64 bit questa ipotesi di parità nelle dimensioni dei tipi di dati non è valida. La creazione di tutti i tipi di dati a 64 bit di lunghezza potrebbe sprecare spazio, perché la maggior parte delle applicazioni non necessita di dimensioni maggiori. Tuttavia, le applicazioni richiedono puntatori a dati a 64 bit e hanno bisogno della possibilità di avere tipi di dati a 64 bit nei casi selezionati. Queste considerazioni hanno portato alla selezione di un modello di dati astratto denominato LLP64 (o P64). Nel modello di dati LLP64, solo i puntatori si espandono a 64 bit; tutti gli altri tipi di dati di base (intero e lungo) rimangono a 32 bit di lunghezza.
Inizialmente, la maggior parte delle applicazioni eseguite in Windows a 64 bit sarà stata portata da Windows a 32 bit. È un obiettivo che la stessa origine, scritta attentamente, deve essere eseguita in Windows a 32 e a 64 bit. La definizione del modello di dati non semplifica questa attività. Tuttavia, assicurarsi che il modello di dati influisca solo sui tipi di dati del puntatore sia il primo passaggio. Il secondo passaggio consiste nel definire un set di nuovi tipi di dati che consentono agli sviluppatori di ridimensionare automaticamente i dati correlati al puntatore. Ciò consente ai dati associati ai puntatori di modificare le dimensioni quando le dimensioni del puntatore cambiano da 32 bit a 64 bit. I tipi di dati di base rimangono a 32 bit di lunghezza, quindi non vi è alcuna modifica delle dimensioni dei dati nel disco, dei dati condivisi in una rete o dei dati condivisi tramite file mappati alla memoria. Ciò consente agli sviluppatori di gran parte del lavoro coinvolto nella conversione di codice a 32 bit in Windows a 64 bit.
Questi nuovi tipi di dati sono stati aggiunti ai file di intestazione dell'API Windows. È quindi possibile iniziare a usare i nuovi tipi. Per altre informazioni, vedere I nuovi tipi di dati.