Condividi tramite


Funzione AllocateUserPhysicalPagesNuma (memoryapi.h)

Alloca le pagine di memoria fisica di cui eseguire il mapping e il mapping all'interno di qualsiasi area AWE (Address Windowing Extensions ) di un processo specificato e specifica il nodo NUMA per la memoria fisica.

Sintassi

BOOL AllocateUserPhysicalPagesNuma(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray,
  [in]      DWORD      nndPreferred
);

Parametri

[in] hProcess

Handle di un processo.

La funzione alloca memoria che può essere mappata successivamente all'interno dello spazio indirizzi virtuale di questo processo. L'handle deve avere il diritto di accesso PROCESS_VM_OPERATION . Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso.

[in, out] NumberOfPages

Dimensioni della memoria fisica da allocare, nelle pagine.

Per determinare le dimensioni della pagina del computer, usare la funzione GetSystemInfo . Nell'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.

La dimensione della matrice allocata deve essere almeno numberOfPages in base alle dimensioni del tipo di dati ULONG_PTR .

Attenzione Non tentare di modificare il buffer. Contiene i dati del sistema operativo e il danneggiamento potrebbe essere irreversibile. Le informazioni nel buffer non sono utili per un'applicazione.
 

[in] nndPreferred

Nodo NUMA in cui deve risiedere la memoria fisica.

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 al ritorno per vedere il numero di pagine allocate. Tutti i numeri di frame di pagina allocati vengono posizionati in sequenza nella memoria a cui punta il parametro PageArray .

Se la funzione ha esito negativo, il valore restituito è FALSE e non vengono allocati frame. Per ottenere informazioni sull'errore estese, chiamare la funzione GetLastError .

Commenti

La funzione AllocateUserPhysicalPagesNuma viene usata per allocare memoria fisica all'interno di un nodo NUMA di cui è possibile eseguire il mapping in un secondo momento all'interno dello spazio indirizzi virtuale del processo. Il privilegio SeLockMemoryPrivilege deve essere abilitato nel token del chiamante oppure 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 aver allocato la memoria, viene bloccata e non disponibile per il resto del sistema di gestione della memoria virtuale.

Le pagine fisiche non possono essere mappate contemporaneamente a più indirizzi virtuali.

Le pagine fisiche possono trovarsi in qualsiasi indirizzo fisico. Non è consigliabile fare ipotesi sulla contiguità delle pagine fisiche.

Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0600 o versione successiva.

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione memoryapi.h (include Windows.h, Memoryapi.h)
Libreria onecore.lib
DLL Kernel32.dll

Vedere anche

Estensioni di windowing degli indirizzi

AllocateUserPhysicalPages

FreeUserPhysicalPages

Funzioni di gestione della memoria

Supporto NUMA