Método IPortWaveRTStream::AllocateContiguousPagesForMdl (portcls.h)
O método AllocateContiguousPagesForMdl
aloca uma lista de páginas de memória física contíguas, nãopagadas e retorna um ponteiro para uma lista de descritores de memória (MDL) 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 inferior do intervalo de endereços do qual o armazenamento do MDL pode ser alocado.
[in] HighAddress
Especifica a extremidade superior do intervalo de endereços do qual o armazenamento do 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.
Valor de retorno
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.
Observações
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 se enquadram no 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 está 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 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 em vez disso. Ao contrário de AllocateContiguousPagesForMdl
, o método AllocatePagesForMdl do não é afetado pela fragmentação de memória.
O método AllocateContiguousPagesforMdl
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 |
---|---|
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 |