Funzione AllocateUserPhysicalPages (memoryapi.h)
Alloca le pagine di memoria fisica da mappare e annullare il mapping all'interno di qualsiasi area AWE ( Address Windowing Extensions ) di un processo specificato.
Windows a 64 bit nei sistemi basati su Itanium: A causa della differenza tra le dimensioni della pagina, AllocateUserPhysicalPages non è supportato per le applicazioni a 32 bit.
Sintassi
BOOL AllocateUserPhysicalPages(
[in] HANDLE hProcess,
[in, out] PULONG_PTR NumberOfPages,
[out] PULONG_PTR PageArray
);
Parametri
[in] hProcess
Handle a un processo.
La funzione alloca memoria che può essere mappata in un secondo momento all'interno dello spazio indirizzi virtuale di questo processo. L'handle deve avere il diritto di accesso PROCESS_VM_OPERATION . Per altre informazioni, vedere Elaborare diritti di sicurezza e accesso.
[in, out] NumberOfPages
Dimensioni della memoria fisica da allocare nelle pagine.
Per determinare le dimensioni della pagina del computer, usare la funzione GetSystemInfo . In output, questo parametro riceve il numero di pagine effettivamente allocate, che potrebbero essere inferiori al numero richiesto.
[out] PageArray
Puntatore a una matrice per archiviare i numeri di frame di pagina della memoria allocata.
Le dimensioni della matrice allocata devono essere almeno il numeroOfPages volte le dimensioni del tipo di dati ULONG_PTR .
Non tentare di modificare questo buffer. Contiene dati del sistema operativo e il danneggiamento potrebbe essere irreversibile. Le informazioni nel buffer non sono utili per un'applicazione.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è TRUE.
È possibile allocare meno pagine di quelle richieste. Il chiamante deve controllare il valore del parametro NumberOfPages in modo da visualizzare il numero di pagine allocato. Tutti i numeri di frame di pagina allocati vengono posizionati in sequenza nella memoria a cui punta il parametro UserPfnArray .
Se la funzione ha esito negativo, il valore restituito è FALSE e non vengono allocati fotogrammi. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
La funzione AllocateUserPhysicalPages viene usata per allocare memoria fisica che può essere mappata successivamente all'interno dello spazio indirizzi virtuale del processo. Il privilegio SeLockMemoryPrivilege deve essere abilitato nel token del chiamante o la funzione avrà esito negativo con ERROR_PRIVILEGE_NOT_HELD. Per altre informazioni, vedere Costanti dei privilegi.
La memoria allocata da questa funzione deve essere fisicamente presente nel sistema. Dopo l'allocazione della memoria, viene bloccato e non disponibile al resto del sistema di gestione della memoria virtuale.
Le pagine fisiche non possono essere mappate simultaneamente a più indirizzi virtuali.
Le pagine fisiche possono risiedere in qualsiasi indirizzo fisico. Non è consigliabile prendere presupposti sulla contiguità delle pagine fisiche.
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.
AllocateUserPhysicalPages2, aggiunto all'SDK in una versione successiva, è uguale a AllocateUserPhysicalPages, ma aggiunge i parametri ExtendedParameters e ExtendedParameterCount.
Esempio
Per un esempio, vedere Esempio di AWE.
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 | memoryapi.h (includono Windows.h, Memoryapi.h) |
Libreria | onecore.lib |
DLL | Kernel32.dll |
Vedere anche
Estensioni di finestra degli indirizzi