Share via


Método IPortWaveRTStream::AllocateContiguousPagesForMdl (portcls.h)

O AllocateContiguousPagesForMdl método aloca uma lista de páginas de memória física contíguas, nãopagadas e retorna um ponteiro para uma MDL (lista de descritores de memória) que as descreve.

Sintaxe

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

Parâmetros

[in] LowAddress

Especifica a extremidade baixa do intervalo de endereços do qual o armazenamento para o MDL pode ser alocado.

[in] HighAddress

Especifica a extremidade superior do intervalo de endereços do qual o armazenamento para o MDL pode ser alocado.

[in] TotalBytes

Especifica o número total de bytes a serem alocados para o MDL. Esse método sempre aloca um número integral de páginas de memória.

Retornar valor

AllocateContiguousPagesForMdl retorna um ponteiro para um PMDL (MDL) que descreve uma lista de páginas de memória física. Se o método não puder alocar o buffer solicitado, ele retornará NULL.

Comentários

O driver chama esse método para alocar um bloco de páginas de memória fisicamente contíguas. Todas as páginas de memória física no MDL estão dentro do intervalo de endereços especificado pelos parâmetros LowAddress e HighAddress . Se houver memória suficiente disponível, a alocação de memória será o tamanho solicitado arredondado para a próxima página; caso contrário, a chamada falhará.

Depois que um sistema estiver em execução há algum tempo, o pool de memória nãopagada do sistema tende a ficar fragmentado, o que aumenta a probabilidade de que uma solicitação para alocar um grande bloco de memória física contígua falhe. Se o controlador de DMA do dispositivo de áudio não exigir que as páginas de memória física sejam contíguas, o driver deverá chamar IPortWaveRTStream::AllocatePagesForMdl . Ao contrário AllocateContiguousPagesForMdlde , o método AllocatePagesForMdl não é afetado pela fragmentação de memória.

O AllocateContiguousPagesforMdl método aloca páginas de memória bloqueadas (nãopagadas), mas não mapeadas. Se o driver de miniporto exigir acesso de software a essa memória, o driver de miniporto deverá fazer uma chamada subsequente para IPortWaveRTStream::MapAllocatedPages para mapear as páginas para o espaço de endereço no modo kernel.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e em sistemas operacionais Windows posteriores.
Plataforma de Destino Universal
Cabeçalho portcls.h
IRQL Nível passivo

Confira também

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages