Fonction MmAllocateContiguousMemoryEx (wdm.h)
La fonction MmAllocateContiguousMemoryEx alloue une plage de mémoire non paginée contiguë et retourne son adresse virtuelle.
Syntaxe
NTSTATUS MmAllocateContiguousMemoryEx(
[in] PSIZE_T NumberOfBytes,
[in] PHYSICAL_ADDRESS LowestAcceptableAddress,
[in] PHYSICAL_ADDRESS HighestAcceptableAddress,
[in] PHYSICAL_ADDRESS BoundaryAddressMultiple,
[in] NODE_REQUIREMENT PreferredNode,
[in] ULONG Protect,
[in, optional] PVOID PartitionObject,
[in] ULONG Tag,
[in] ULONG Flags,
[out] PVOID *BaseAddress
);
Paramètres
[in] NumberOfBytes
Lors de l’entrée, indique le nombre d’octets à allouer. En cas de retour réussi, reçoit le montant alloué.
[in] LowestAcceptableAddress
Fournit l’adresse physique la plus basse qui est valide pour l’allocation. Par exemple, si l’appareil peut uniquement référencer la mémoire physique dans la plage de 8 À 16 Mo, cette valeur est définie sur 0x800000 (8 Mo).
[in] HighestAcceptableAddress
Fournit l’adresse physique la plus élevée qui est valide pour l’allocation. Par exemple, si l’appareil ne peut référencer que la mémoire physique inférieure à 16 Mo, cette valeur est définie sur 0xFFFFFF (16 Mo - 1).
[in] BoundaryAddressMultiple
Fournit le multiple d’adresse physique que cette allocation ne doit pas croiser.
[in] PreferredNode
Fournit le nœud préféré à partir duquel l’allocation doit être effectuée si des pages sont disponibles sur ce nœud. MM_ANY_NODE_OK est utilisé pour indiquer aucune préférence de nœud.
[in] Protect
Fournit la protection souhaitée (y compris le type de cache) pour le mappage.
[in, optional] PartitionObject
S’il est spécifié, fournit un objet de partition à partir duquel allouer la mémoire physique. Si elle n’est pas spécifiée, la mémoire provient de la partition système.
[in] Tag
Fournit l’étiquette pour l’allocation.
[in] Flags
Différents indicateurs :
- MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY : allouez la mémoire contiguë souhaitée uniquement si elle peut être satisfaite rapidement. Échec si la recherche et la négociation de la mémoire physique prolongées doivent avoir lieu pour satisfaire à l’allocation.
[out] BaseAddress
En cas de réussite, reçoit l’adresse virtuelle de base de la mémoire contiguë.
Valeur retournée
Retourne un code NTSTATUS.
Remarques
Cette mémoire doit être libérée avec MmFreeContiguousMemory.
Configuration requise
Condition requise | Valeur |
---|---|
Serveur minimal pris en charge | Windows Server 2022 |
En-tête | wdm.h |
IRQL | <= DISPATCH_LEVEL |