Funzione StorPortAllocateDmaMemory (storport.h)

Questa funzione è la versione estesa della funzione StorPortAllocateContiguousMemorySpecifyCacheNode. Alloca un intervallo di memoria non con estensione contigua fisicamente contigua, non a pagina 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 l'adattatore del 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 ritorno 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 paginata del sistema) alla memoria contigua allocata fisicamente.

[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 L'operazione è stata completata.
STOR_STATUS_INSUFFICIENT_RESOURCES L'operazione non è riuscita a allocare la memoria richiesta a causa di risorse insufficienti.

Commenti

Se la richiesta ha esito negativo, BufferPointer verrà impostato su NULL.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 (versione 1803)
Piattaforma di destinazione Universale
Intestazione Storport.h
Regole di conformità DDI StorPortIrql

Vedi anche

StorPortFreeDmaMemory