Condividi tramite


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

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Funzioni di gestione della memoria

AllocateUserPhysicalPages2