Compartilhar via


Função MmAllocateNonCachedMemory (ntddk.h)

A rotina MmAllocateNonCachedMemory aloca um intervalo de endereços virtuais de memória não armazenada em cache e alinhada a cache.

Sintaxe

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

Parâmetros

[in] NumberOfBytes

Especifica o tamanho em bytes do intervalo a ser alocado.

Valor de retorno

Se a memória solicitada não puder ser alocada, o valor retornado será NULL. Caso contrário, é o endereço virtual base do intervalo alocado.

Observações

MmAllocateNonCachedMemory pode ser chamado de uma rotina DriverEntry para alocar um bloco não armazenado em cache de memória virtual para vários buffers específicos do dispositivo. A função sempre retorna um múltiplo completo do tamanho da página de memória virtual, de memória de espaço de endereço do sistema nãopagada, independentemente do tamanho de alocação solicitado.

As alocações não armazenadas em cache são alinhadas em um múltiplo integral do tamanho da linha de cache de dados do processador para evitar problemas de cache e coerência.

As páginas de memória física que MmAllocateNonCachedMemory retorna normalmente não são páginas contíguas.

A memória que aloca MmAllocateNonCachedMemory não está inicializada. Um driver de modo kernel deve primeiro zero essa memória se ele for torná-la visível para o software no modo de usuário (para evitar o vazamento de conteúdo potencialmente privilegiado).

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <=APC_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

Consulte também

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory