Condividi tramite


Funzione MmAllocateMappingAddressEx (wdm.h)

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

Vedere anche

MmAllocateMappingAddress

MmFreeMappingAddress

MmMapLockedPagesWithReservedMapping

MmUnmapReservedMapping