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 ao cache.

Sintaxe

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

Parâmetros

[in] NumberOfBytes

Especifica o tamanho em bytes do intervalo a ser alocado.

Retornar valor

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

Comentários

MmAllocateNonCachedMemory pode ser chamado de uma rotina DriverEntry para alocar um bloco de memória virtual não armazenado em cache 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 da alocação solicitada.

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 alocada por MmAllocateNonCachedMemory não é inicializada. Um driver de modo kernel deve primeiro zerar essa memória se ela for torná-la visível para o software no modo de usuário (para evitar vazamento de conteúdo potencialmente privilegiado).

Requisitos

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

Confira também

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory