Condividi tramite


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

Vedere anche

StorPortFreeDmaMemory