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