Condividi tramite


PALLOCATE_COMMON_BUFFER_WITH_BOUNDS funzione di callback (wdm.h)

Questa funzione di callback alloca la memoria per un buffer comune e la esegue il mapping in modo che possa essere accessibile da un dispositivo master e dalla CPU. Il buffer comune può essere associato da un indirizzo logico minimo e massimo facoltativo.

Sintassi

PALLOCATE_COMMON_BUFFER_WITH_BOUNDS PallocateCommonBufferWithBounds;

PVOID PallocateCommonBufferWithBounds(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in, optional] PPHYSICAL_ADDRESS MinimumAddress,
  [in, optional] PPHYSICAL_ADDRESS MaximumAddress,
  [in]           ULONG Length,
  [in]           ULONG Flags,
  [in, optional] MEMORY_CACHING_TYPE *CacheType,
  [in]           NODE_REQUIREMENT PreferredNode,
  [out]          PPHYSICAL_ADDRESS LogicalAddress
)
{...}

Parametri

[in] DmaAdapter

Puntatore a una struttura di DMA_ADAPTER. Questa struttura è l'oggetto adapter che rappresenta il dispositivo DMA master del driver o il canale DMA del sistema. Il chiamante ha ottenuto questo puntatore da una chiamata precedente alla routine IoGetDmaAdapter .

[in, optional] MinimumAddress

Puntatore a una variabile contenente l'indirizzo logico minimo per il buffer comune. Questo parametro indica che il buffer deve essere allocato dalla memoria in corrispondenza e sopra questo indirizzo. Questo parametro è facoltativo e può essere specificato come NULL per indicare che non esiste alcun indirizzo minimo.

[in, optional] MaximumAddress

Puntatore a una variabile contenente l'indirizzo logico massimo per il buffer comune. Questo parametro indica che il buffer deve essere allocato dalla memoria seguente. Questo parametro è facoltativo e può essere specificato come NULL per indicare che non esiste alcun indirizzo massimo.

[in] Length

Dimensioni, in byte, del buffer comune da allocare per l'operazione DMA.

[in] Flags

Dimensioni, in byte, del buffer comune da allocare per l'operazione DMA.

Contrassegno Significato
DOMAIN_COMMON_BUFFER_LARGE_PAGE Il buffer comune verrà allocato usando una granularità di pagina più grande di PAGE_SIZE * 512. Si noti che questo può aumentare la probabilità di esito negativo dell'allocazione.

[in, optional] CacheType

Puntatore a un'enumerazione MEMORY_CACHING_TYPE che indica se la routine deve abilitare o disabilitare la memoria memorizzata nella cache nel buffer comune da allocare. Sono supportati solo i valori di MmNonCached e MmCached . Il parametro è facoltativo e può essere specificato come NULL per specificare la memorizzazione nella cache dipenderà dal valore predefinito della piattaforma hardware.

[in] PreferredNode

Nodo NUMA preferito da cui deve essere allocata la memoria. Se N è il numero di nodi NUMA in un sistema multiprocessore, PreferredNode è un numero nell'intervallo da 0 a N-1. Per un sistema a un processore o un sistema multiprocessore non NUMA, impostare PreferredNode su zero.

[out] LogicalAddress

Puntatore a una variabile in cui questa routine scrive l'indirizzo logico che il dispositivo può usare per accedere al buffer comune. Il dispositivo DMA deve usare questo indirizzo logico anziché l'indirizzo fisico restituito da una routine come MmGetPhysicalAddress.

Valore restituito

Restituisce PVOID che corrisponde all'indirizzo virtuale della memoria allocata per il buffer comune. Se il buffer non può essere allocato, restituisce NULL.

Commenti

Questa funzione di callback è una versione estesa della routine PALLOCATE_COMMON_BUFFER_EX . L'elenco seguente riepiloga le funzionalità disponibili solo nella versione estesa:

  • Il chiamante può specificare un indirizzo logico minimo per il buffer comune allocato.

  • Il chiamante può fornire un override del tipo di memorizzazione nella cache che verrà seguito indipendentemente dalla piattaforma hardware.

  • Il chiamante può specificare l'uso di una granularità più grande per l'allocazione comune del buffer.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1803
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL

Vedi anche

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX