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

Essa função de retorno de chamada aloca a memória para um buffer comum e a mapeia para que possa ser acessada por um dispositivo master e pela CPU. O buffer comum pode ser associado por um endereço lógico mínimo e máximo opcional.

Sintaxe

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

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, optional] MinimumAddress

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

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

Sinalizador Significado
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.

Retornar valor

Retorna PVOID que é o endereço virtual da memória alocada para o buffer comum. Se o buffer não puder ser alocado, retornará NULL.

Comentários

Essa função de retorno de chamada é uma versão estendida da rotina PALLOCATE_COMMON_BUFFER_EX . A lista a seguir resume os recursos que estão disponíveis apenas na versão estendida:

  • O chamador pode especificar um endereço lógico mínimo para o buffer comum a ser alocado.

  • O chamador pode fornecer uma substituição de tipo de cache que será seguida independentemente da plataforma de hardware.

  • O chamador pode especificar o uso de uma granularidade maior para sua alocação de buffer comum.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1803
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h)
IRQL PASSIVE_LEVEL

Confira também

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX