Partager via


StorPortAllocateDmaMemory, fonction (storport.h)

Cette fonction est la version étendue de la fonction StorPortAllocateContiguousMemorySpecifyCacheNode. Il alloue une plage de mémoire non mise en cache non mise en cache, non mises en cache physiquement contiguës et retourne l’adresse physique de la mémoire tampon allouée.

Syntaxe

ULONG StorPortAllocateDmaMemory(
  [in]           PVOID               HwDeviceExtension,
  [in]           SIZE_T              NumberOfBytes,
  [in]           PHYSICAL_ADDRESS    LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS    HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS    BoundaryAddressMultiple,
  [in]           MEMORY_CACHING_TYPE CacheType,
  [in]           NODE_REQUIREMENT    PreferredNode,
  [out]          PVOID               *BufferPointer,
  [out]          PPHYSICAL_ADDRESS   PhysicalAddress
);

Paramètres

[in] HwDeviceExtension

Pointeur vers l’extension de périphérique matériel pour l’adaptateur de bus hôte (HBA).

[in] NumberOfBytes

Nombre d’octets à allouer.

[in] LowestAcceptableAddress

Adresse physique la plus basse valide pour l’allocation. Par exemple, si l’appareil ne peut référencer que la mémoire physique dans la plage de 8 Mo à 16 Mo, cette valeur est définie sur 0x800000 (8 Mo).

[in] HighestAcceptableAddress

Adresse physique la plus élevée 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, optional] BoundaryAddressMultiple

Adresse physique multiple que cette allocation ne doit pas traverser.

[in] CacheType

Type de cache souhaité pour le mappage.

[in] PreferredNode

Nœud préféré à partir duquel l’allocation doit être effectuée si des pages sont disponibles sur ce nœud.

[out] BufferPointer

Variable qui reçoit l’adresse de départ du bloc de mémoire alloué. À la suite de cette routine, si cette variable est égale à zéro, une plage contiguë n’a pas pu être trouvée pour satisfaire la demande. Si cette variable n’est pas NULL, elle contient un pointeur (par exemple, une adresse virtuelle dans la partie non paginé du système) vers la mémoire contiguë physiquement allouée.

[out] PhysicalAddress

Adresse physique du bloc de mémoire alloué.

Valeur de retour

Cette fonction retourne un code STOR_STATUS.

Retourner le code Description
STOR_STATUS_NOT_IMPLEMENTED Cette fonction n’est pas implémentée sur le système d’exploitation actif.
STOR_STATUS_SUCCESS L’opération a réussi.
STOR_STATUS_INSUFFICIENT_RESOURCES L’opération n’a pas pu allouer la mémoire demandée en raison de ressources insuffisantes.

Remarques

Si la requête échoue, BufferPointer est défini sur NULL.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10 (version 1803)
plateforme cible Universel
d’en-tête storport.h
règles de conformité DDI StorPortIrql

Voir aussi

StorPortFreeDmaMemory