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 et non pagée physiquement contiguë 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 la mémoire physique que 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 peut uniquement référencer une 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 croiser.
[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é. Au retour de cette routine, si cette variable est égale à zéro, il est impossible de trouver une plage contiguë pour répondre à la demande. Si cette variable n’est pas NULL, elle contient un pointeur (par exemple, une adresse virtuelle dans la partie non pagée du système) vers la mémoire physiquement contiguë allouée.
[out] PhysicalAddress
Adresse physique du bloc de mémoire alloué.
Valeur retournée
Cette fonction retourne un code STOR_STATUS.
Code de retour | 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 demande échoue, BufferPointer est défini sur NULL.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 (version 1803) |
Plateforme cible | Universal |
En-tête | storport.h |
Règles de conformité DDI | StorPortIrql |