Partilhar via


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

O método AllocateContiguousPagesForMdl aloca uma lista de páginas de memória física contíguas, nãopagadas e retorna um ponteiro para uma lista de descritores de memória (MDL) 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 inferior do intervalo de endereços do qual o armazenamento do MDL pode ser alocado.

[in] HighAddress

Especifica a extremidade superior do intervalo de endereços do qual o armazenamento do 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.

Valor de retorno

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.

Observações

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 se enquadram no 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 está 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 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 em vez disso. Ao contrário de AllocateContiguousPagesForMdl, o método AllocatePagesForMdl do não é afetado pela fragmentação de memória.

O método AllocateContiguousPagesforMdl 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
de cliente com suporte mínimo Disponível no Windows Vista e em sistemas operacionais Windows posteriores.
da Plataforma de Destino Universal
cabeçalho portcls.h
IRQL Nível passivo

Consulte também

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages