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

Confira também

MmFreeContiguousMemory