Compartilhar via


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

O método AllocatePagesForMdl aloca uma lista de páginas de memória física nãopagadas e retorna um ponteiro para uma lista de descritores de memória (MDL) 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 do MDL pode ser alocado. A extremidade inferior 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.

Valor de retorno

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.

Observações

Como a pilha de áudio do Windows não dá suporte a um mecanismo para expressar os 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 poderá 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 método AllocatePagesforMdl 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
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::AllocateContiguousPagesForMdl

IPortWaveRTStream::MapAllocatedPages