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

Voir aussi

MmFreeContiguousMemory