Funzione MapUserPhysicalPagesScatter (winbase.h)
Esegue il mapping delle pagine di memoria fisica allocate in precedenza a un indirizzo specificato in un'area AWE (Address Windowing Extensions ).
Windows a 64 bit nei sistemi basati su Itanium: A causa della differenza nelle dimensioni delle pagine, MapUserPhysicalPagesScatter non è supportato per le applicazioni a 32 bit.
Sintassi
BOOL MapUserPhysicalPagesScatter(
[in] PVOID *VirtualAddresses,
[in] ULONG_PTR NumberOfPages,
[in] PULONG_PTR PageArray
);
Parametri
[in] VirtualAddresses
Puntatore a una matrice di indirizzi iniziali delle aree di memoria da rieseguire il mapping.
Ogni voce in VirtualAddresses deve essere compresa nell'intervallo di indirizzi restituito dalla funzione VirtualAlloc quando viene allocata l'area Address Windowing Extensions (AWE). Il valore in NumberOfPages indica le dimensioni della matrice. Le voci possono essere provenienti da più aree AWE (Address Windowing Extensions).
[in] NumberOfPages
Dimensioni della memoria fisica e dello spazio indirizzi virtuale per cui stabilire le traduzioni, nelle pagine.
L'array in VirtualAddresses specifica l'intervallo di indirizzi virtuali.
[in] PageArray
Puntatore a una matrice di valori che indica come deve essere trattata ogni pagina corrispondente in VirtualAddresses .
Un valore 0 (zero) indica che la voce corrispondente in VirtualAddresses deve essere annullata e qualsiasi valore diverso da zero che deve essere mappato.
Se questo parametro è NULL, ogni indirizzo nella matrice VirtualAddresses non viene mappato.
Il valore in NumberOfPages indica le dimensioni della matrice.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è TRUE.
Se la funzione ha esito negativo, il valore restituito è FALSE e la funzione non esegue il mapping o l'unmap, parziale o altrimenti. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Le pagine fisiche possono essere non mappate, ma non vengono liberate. È necessario chiamare FreeUserPhysicalPages per liberare le pagine fisiche.
È possibile specificare un numero qualsiasi di pagine di memoria fisica, ma la memoria non può estendersi all'esterno dello spazio indirizzi virtuale allocato da VirtualAlloc. Tutte le mappe indirizzi esistenti vengono sovrascritte automaticamente con le nuove traduzioni e le vecchie traduzioni non vengono mappate.
Non è possibile eseguire il mapping delle pagine di memoria fisica all'esterno dell'intervallo specificato in AllocateUserPhysicalPages. È possibile eseguire il mapping di più aree contemporaneamente, ma non possono sovrapporsi.
Le pagine fisiche possono trovarsi in qualsiasi indirizzo fisico, ma non fare ipotesi sulla contiguità delle pagine fisiche.
In un ambiente multiprocessore questa funzione mantiene la coerenza del buffer di conversione hardware. Al ritorno da questa funzione, tutti i thread in tutti i processori sono garantiti per visualizzare il mapping corretto.
Per compilare un'applicazione che usa questa funzione, definire la macro _WIN32_WINNT come 0x0500 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winbase.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |