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) |