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 |