Função MmAllocateContiguousMemoryEx (wdm.h)
A função MmAllocateContiguousMemoryEx aloca um intervalo de memória não paginada fisicamente contígua e retorna seu endereço virtual.
Sintaxe
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
Na entrada, fornece o número de bytes a serem alocados. No retorno bem-sucedido, recebe o valor alocado.
[in] LowestAcceptableAddress
Fornece o endereço físico mais baixo que é válido para a alocação. Por exemplo, se o dispositivo só puder fazer referência à memória física no intervalo de 8M a 16 MB, esse valor será definido como 0x800000 (8 Mb).
[in] HighestAcceptableAddress
Fornece o endereço físico mais alto que é válido para a alocação. Por exemplo, se o dispositivo só puder fazer referência à memória física abaixo de 16 MB, esse valor será definido como 0xFFFFFF (16 Mb - 1).
[in] BoundaryAddressMultiple
Fornece o endereço físico múltiplo que essa alocação não deve cruzar.
[in] PreferredNode
Fornece o nó preferencial do qual a alocação deve ser feita se as páginas estiverem disponíveis nesse nó. MM_ANY_NODE_OK é usado para significar nenhuma preferência de nó.
[in] Protect
Fornece a proteção desejada (incluindo o tipo de cache) para o mapeamento.
[in, optional] PartitionObject
Se especificado, fornece um objeto de partição do qual alocar a memória física. Se não for especificado, a memória virá da partição do sistema.
[in] Tag
Fornece a marca para a alocação.
[in] Flags
Vários sinalizadores:
- MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY – aloque a memória contígua desejada somente se ela puder ser atendida rapidamente. Falha se a pesquisa e a negociação de memória física prolongada devem ocorrer para atender à alocação.
[out] BaseAddress
Em caso de êxito, recebe o endereço virtual base da memória contígua.
Retornar valor
Retorna um código NTSTATUS.
Comentários
Essa memória deve ser liberada com MmFreeContiguousMemory.
Requisitos
Requisito | Valor |
---|---|
Servidor mínimo com suporte | Windows Server 2022 |
Cabeçalho | wdm.h |
IRQL | <= DISPATCH_LEVEL |