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 |