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 master barramento do driver ou o canal DMA do sistema. O chamador obteve esse ponteiro de uma chamada anterior para a rotina IoGetDmaAdapter .

[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 a ser alocado para a operação de DMA.

[in] Flags

O tamanho, em bytes, do buffer comum a 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.

[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.

Retornar valor

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Cabeçalho wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL