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 |