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 |