Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La funzione MmAllocateMappingMappingAddressEx alloca un mapping PTE di sistema della lunghezza richiesta che può essere usata in un secondo momento per eseguire il mapping di indirizzi arbitrari.
Sintassi
PVOID MmAllocateMappingAddressEx(
[in] SIZE_T NumberOfBytes,
[in] ULONG PoolTag,
[in] ULONG Flags
);
Parametri
[in] NumberOfBytes
Fornisce il numero massimo di byte che il mapping può estendersi.
[in] PoolTag
Specifica un tag di quattro caratteri utilizzato per identificare il buffer. Usare un tag PoolTag distinto per ogni percorso del codice di allocazione. Per una descrizione dei tag del pool, vedere ExAllocatePoolWithTag.
[in] Flags
Specifica i flag per questa operazione. Impostare questo parametro su zero o sull'OR bit per bit di uno o più dei bit di flag seguenti:
| Flag | Meaning |
|---|---|
| MM_MAPPING_ADDRESS_DIVISIBLE | Indica che l'indirizzo di mapping deve essere divisibile in base alle dimensioni del mapping. Questo flag è utile per garantire che l'indirizzo di mapping sia allineato a determinati requisiti hardware. |
Valore restituito
MmAllocateMappingAddressEx restituisce un puntatore all'inizio del buffer di memoria riservato se l'operazione ha esito positivo; in caso contrario, restituisce NULL.
Osservazioni:
MmAllocateMappingAddressEx offre una versione estesa di MmAllocateMappingAddress con supporto di flag aggiuntivo. Questa funzione riserva un intervallo di spazio indirizzi virtuale di sistema che può essere usato per operazioni di mapping successive con MmMapLockedPagesWithReservedMapping.
Nessuna memoria fisica allocata da questa funzione; riserva solo spazio indirizzi virtuali. Non è possibile accedere alla memoria riservata finché non viene eseguito il mapping tramite MmMapLockedPagesWithReservedMapping.
I chiamanti devono fornire un PoolTag diverso da zero per identificare l'allocazione.
L'intervallo di indirizzi riservati deve essere liberato usando MmFreeMappingAddress quando non è più necessario.
Le allocazioni di dimensioni molto elevate (>= pagine da 4 GB) avranno esito negativo. La funzione potrebbe non riuscire se sono disponibili ptes di sistema insufficienti
Fabbisogno
| Requisito | Valore |
|---|---|
| client minimo supportato | Windows 10, versione 2004 |
| intestazione | wdm.h |
| IRQL | <=APC_LEVEL |