Compartilhar via


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

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

Sintaxe

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

Parâmetros

[in] HighAddress

Especifica a extremidade superior do intervalo de endereços do qual o armazenamento para o MDL pode ser alocado. A extremidade baixa do intervalo de endereços é implicitamente zero.

[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

AllocatePagesforMdl retorna um ponteiro para um 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

Como a pilha de áudio do Windows não dá suporte a um mecanismo para expressar requisitos de alinhamento de acesso à memória para buffers, os drivers de áudio devem selecionar um tipo de cache para buffers de memória mapeados que não impõem requisitos de alinhamento específicos da plataforma. Em outras palavras, o tipo de cache usado pelo driver de áudio para buffers de memória mapeados não deve fazer suposições sobre os requisitos de alinhamento de memória para qualquer plataforma específica.

O driver chama esse método para alocar memória que pode ser mapeada para o modo de usuário ou kernel. As páginas de memória física no MDL não são necessariamente contíguas na memória física, mas todas elas se enquadram no intervalo de endereços especificado.

O método sempre aloca um número integral de páginas. 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 alocação de memória pode ser menor que o tamanho solicitado. O chamador deve verificar quantos bytes são realmente alocados.

Se o controlador DMA do dispositivo de áudio exigir que as páginas de memória física no buffer sejam contíguas, o driver deverá chamar IPortWaveRTStream::AllocateContiguousPagesForMdl .

Assim como a função MmAllocatePagesForMdl , o AllocatePagesforMdl método aloca páginas de memória bloqueadas (nãopagadas), mas não mapeadas. Se o driver de miniporto quiser configurar o 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::AllocateContiguousPagesForMdl

IPortWaveRTStream::MapAllocatedPages