PALLOCATE_DOMAIN_COMMON_BUFFER funzione di callback (wdm.h)

Questa funzione di callback alloca la memoria per un buffer comune del dominio.

Sintassi

PALLOCATE_DOMAIN_COMMON_BUFFER PallocateDomainCommonBuffer;

NTSTATUS PallocateDomainCommonBuffer(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in]           HANDLE DomainHandle,
  [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,
  [out]          PVOID *VirtualAddress
)
{...}

Parametri

[in] DmaAdapter

Puntatore a una struttura 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] DomainHandle

Handle al dominio DMA ottenuto dal chiamante da una chiamata precedente a PGET_DMA_DOMAIN.

[in, optional] MaximumAddress

Puntatore a una variabile che contiene l'indirizzo logico massimo per il buffer comune. Questo parametro indica che il buffer deve essere allocato dalla memoria al di sotto di questo indirizzo. Questo parametro è facoltativo e può essere specificato come NULL per indicare che non è presente 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.

I valori possibili sono:

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    Il buffer comune verrà allocato usando una granularità di pagina più grande di PAGE_SIZE * 512. Si noti che ciò può aumentare la probabilità che l'allocazione abbia esito negativo.

[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 che la memorizzazione nella cache dipenderà dall'impostazione predefinita 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 compreso 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, ad esempio MmGetPhysicalAddress.

[out] VirtualAddress

Puntatore a una variabile in cui questa routine scrive l'indirizzo virtuale corrispondente del buffer allocato.

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un valore NTSTATUS appropriato.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Intestazione wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL