Función MmAllocateContiguousMemoryEx (wdm.h)
La función MmAllocateContiguousMemoryEx asigna un intervalo de memoria físicamente contigua no paginada y devuelve su dirección virtual.
Sintaxis
NTSTATUS MmAllocateContiguousMemoryEx(
[in] PSIZE_T NumberOfBytes,
[in] PHYSICAL_ADDRESS LowestAcceptableAddress,
[in] PHYSICAL_ADDRESS HighestAcceptableAddress,
[in] PHYSICAL_ADDRESS BoundaryAddressMultiple,
[in] NODE_REQUIREMENT PreferredNode,
[in] ULONG Protect,
[in, optional] PVOID PartitionObject,
[in] ULONG Tag,
[in] ULONG Flags,
[out] PVOID *BaseAddress
);
Parámetros
[in] NumberOfBytes
En la entrada, proporciona el número de bytes que se van a asignar. Si la devolución es correcta, recibe la cantidad asignada.
[in] LowestAcceptableAddress
Proporciona la dirección física más baja que es válida para la asignación. Por ejemplo, si el dispositivo solo puede hacer referencia a la memoria física del intervalo de 8M a 16 MB, este valor se establecería en 0x800000 (8 Mb).
[in] HighestAcceptableAddress
Proporciona la dirección física más alta que es válida para la asignación. Por ejemplo, si el dispositivo solo puede hacer referencia a la memoria física por debajo de 16 MB, este valor se establecería en 0xFFFFFF (16 Mb - 1).
[in] BoundaryAddressMultiple
Proporciona la dirección física múltiple que no debe cruzar esta asignación.
[in] PreferredNode
Proporciona el nodo preferido desde el que se debe realizar la asignación si las páginas están disponibles en ese nodo. MM_ANY_NODE_OK se usa para indicar que no hay preferencias de nodo.
[in] Protect
Proporciona la protección deseada (incluido el tipo de caché) para la asignación.
[in, optional] PartitionObject
Si se especifica, proporciona un objeto de partición para asignar la memoria física de . Si no se especifica, la memoria provendrá de la partición del sistema.
[in] Tag
Proporciona la etiqueta para la asignación.
[in] Flags
Varias marcas:
- MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY : asigne memoria contigua deseada solo si se puede satisfacer rápidamente. Falla si la búsqueda de memoria física prolongada y el trading deben realizarse para satisfacer la asignación.
[out] BaseAddress
Si se ejecuta correctamente, recibe la dirección virtual base de la memoria contigua.
Valor devuelto
Devuelve un código NTSTATUS.
Comentarios
Esta memoria debe liberarse con MmFreeContiguousMemory.
Requisitos
Requisito | Value |
---|---|
Servidor mínimo compatible | Windows Server 2022 |
Encabezado | wdm.h |
IRQL | <= DISPATCH_LEVEL |