Método IPortWaveRTStream::AllocateContiguousPagesForMdl (portcls.h)
O AllocateContiguousPagesForMdl
método aloca uma lista de páginas de memória física contíguas, nãopagadas e retorna um ponteiro para uma MDL (lista de descritores de memória) 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 baixa do intervalo de endereços do qual o armazenamento para o MDL pode ser alocado.
[in] HighAddress
Especifica a extremidade superior do intervalo de endereços do qual o armazenamento para o 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.
Retornar valor
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.
Comentários
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 estão dentro do 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 estiver 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 de 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 . Ao contrário AllocateContiguousPagesForMdl
de , o método AllocatePagesForMdl não é afetado pela fragmentação de memória.
O AllocateContiguousPagesforMdl
método 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 |
---|---|
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 |