Compartir a través de


Función MmAllocateNonCachedMemory (ntddk.h)

La rutina MmAllocateNonCachedMemory asigna un intervalo de direcciones virtuales de memoria no almacenada en caché y alineada con caché.

Sintaxis

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

Parámetros

[in] NumberOfBytes

Especifica el tamaño en bytes del intervalo que se va a asignar.

Valor devuelto

Si no se puede asignar la memoria solicitada, el valor devuelto es NULL. De lo contrario, es la dirección virtual base del intervalo asignado.

Comentarios

Se puede llamar a MmAllocateNonCachedMemory desde una rutina DriverEntry para asignar un bloque de memoria virtual no almacenado en caché para varios búferes específicos del dispositivo. La función siempre devuelve un múltiplo completo del tamaño de página de memoria virtual, de memoria del espacio de direcciones del sistema no paginado, independientemente del tamaño de asignación solicitado.

Las asignaciones no almacenadas en caché se alinean en un múltiplo entero del tamaño de la línea de caché de datos del procesador para evitar problemas de caché y coherencia.

Las páginas de memoria física que devuelve MmAllocateNonCachedMemory normalmente no son páginas contiguas.

La memoria que mmAllocateNonCachedMemory asigna no está inicializada. Un controlador en modo kernel primero debe cero esta memoria si va a hacer que sea visible para el software en modo de usuario (para evitar la pérdida de contenido potencialmente con privilegios).

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ntddk.h (incluya Ntddk.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <=APC_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

Consulte también

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory