Compartilhar via


PALLOCATE_DOMAIN_COMMON_BUFFER função de retorno de chamada (wdm.h)

Essa função de retorno de chamada aloca a memória para um buffer comum de domínio.

Sintaxe

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
)
{...}

Parâmetros

[in] DmaAdapter

Um ponteiro para uma estrutura DMA_ADAPTER. Essa estrutura é o objeto do adaptador que representa o dispositivo DMA mestre do barramento do driver ou o canal DMA do sistema. O chamador obteve esse ponteiro de uma chamada anterior para a rotina deIoGetDmaAdapter.

[in] DomainHandle

O identificador para o domínio DMA que o chamador obteve de uma chamada anterior para PGET_DMA_DOMAIN.

[in, optional] MaximumAddress

Um ponteiro para uma variável que contém o endereço lógico máximo para o buffer comum. Esse parâmetro indica que o buffer deve ser alocado da memória abaixo desse endereço. Esse parâmetro é opcional e pode ser especificado como NULL para indicar que não há endereço máximo.

[in] Length

O tamanho, em bytes, do buffer comum que deve ser alocado para a operação de DMA.

[in] Flags

O tamanho, em bytes, do buffer comum que deve ser alocado para a operação de DMA.

Os valores possíveis incluem:

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    O buffer comum será alocado usando uma granularidade de página maior de PAGE_SIZE * 512. Observe que isso pode aumentar a chance de a alocação não ter êxito.

[in, optional] CacheType

Um ponteiro para uma enumeração MEMORY_CACHING_TYPE indicando se a rotina deve habilitar ou desabilitar a memória armazenada em cache no buffer comum a ser alocado. Há suporte apenas para valores de MmNonCached e MmCached. O parâmetro é opcional e pode ser especificado como NULL para especificar que o cache dependerá do padrão da plataforma de hardware.

Se um chamador fornecer um valor de substituição de MmCached em um adaptador que não seja coerente com cache, ele será responsável por liberar o conteúdo do cache. Se não tiver certeza, um chamador sempre deverá fornecer NULL.

[in] PreferredNode

O nó NUMA preferencial do qual a memória deve ser alocada. Se N for o número de nós NUMA em um sistema multiprocessador, PreferredNode será um número no intervalo de 0 a N–1. Para um sistema de um processador ou um sistema multiprocessador não NUMA, defina PreferredNode como zero.

[out] LogicalAddress

Um ponteiro para uma variável na qual essa rotina grava o endereço lógico que o dispositivo pode usar para acessar o buffer comum. O dispositivo DMA deve usar esse endereço lógico em vez do endereço físico retornado por uma rotina como MmGetPhysicalAddress.

[out] VirtualAddress

Um ponteiro para uma variável na qual essa rotina grava o endereço virtual correspondente do buffer alocado.

Valor de retorno

Retorna STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um valor NTSTATUS apropriado.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10
cabeçalho wdm.h (inclua Wdm.h)
IRQL PASSIVE_LEVEL

Consulte também

DMA_OPERATIONS