Funzione StorPortAllocateDmaMemory (storport.h)
Questa funzione è la versione estesa della funzione StorPortAllocateContiguousMemorySpecifyCacheNode. Alloca un intervallo di memoria non memorizzata fisicamente contigua, non di paging e restituisce l'indirizzo fisico del buffer allocato.
Sintassi
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
);
Parametri
[in] HwDeviceExtension
Puntatore all'estensione del dispositivo hardware per la scheda bus host (HBA).
[in] NumberOfBytes
Numero di byte da allocare.
[in] LowestAcceptableAddress
Indirizzo fisico più basso valido per l'allocazione. Ad esempio, se il dispositivo può fare riferimento solo alla memoria fisica nell'intervallo da 8 MB a 16 MB, questo valore verrà impostato su 0x800000 (8 MB).
[in] HighestAcceptableAddress
Indirizzo fisico più alto valido per l'allocazione. Ad esempio, se il dispositivo può fare riferimento solo alla memoria fisica inferiore a 16 MB, questo valore verrà impostato su 0xFFFFFF (16 MB - 1).
[in, optional] BoundaryAddressMultiple
Indirizzo fisico multiplo che questa allocazione non deve attraversare.
[in] CacheType
Tipo di cache desiderato per il mapping.
[in] PreferredNode
Nodo preferito da cui deve essere effettuata l'allocazione se le pagine sono disponibili in tale nodo.
[out] BufferPointer
Variabile che riceve l'indirizzo iniziale del blocco di memoria allocato. Al termine della restituzione da questa routine, se questa variabile è zero, non è stato possibile trovare un intervallo contiguo per soddisfare la richiesta. Se questa variabile non è NULL, contiene un puntatore (ad esempio, un indirizzo virtuale nella parte non di paging del sistema) alla memoria fisicamente contigua allocata.
[out] PhysicalAddress
Indirizzo fisico del blocco di memoria allocato.
Valore restituito
Questa funzione restituisce un codice STOR_STATUS.
Codice restituito | Descrizione |
---|---|
STOR_STATUS_NOT_IMPLEMENTED | Questa funzione non viene implementata nel sistema operativo attivo. |
STOR_STATUS_SUCCESS | Operazione riuscita. |
STOR_STATUS_INSUFFICIENT_RESOURCES | L'operazione non è riuscita ad allocare la memoria richiesta a causa di risorse insufficienti. |
Osservazioni
Se la richiesta ha esito negativo, BufferPointer verrà impostato su NULL.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 (versione 1803) |
piattaforma di destinazione | Universale |
intestazione | storport.h |
regole di conformità DDI | StorPortIrql |