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 |