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 alineadas 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.

Observaciones

se puede llamar a mmAllocateNonCachedMemory desde una rutina de 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 de coherencia.

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

La memoria que mmAllocateNonCachedMemory asigna no se inicializa. 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 Valor
de la plataforma de destino de Universal
encabezado de ntddk.h (incluya Ntddk.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL <=APC_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

Consulte también

AllocateCommonBuffer

KeGetDcacheFillSize

mmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory