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

El AllocateContiguousPagesForMdl método asigna una lista de páginas contiguas, no paginadas, de memoria física y devuelve un puntero a una lista de descriptores de memoria (MDL) que las describe.

Sintaxis

PMDL AllocateContiguousPagesForMdl(
  [in] PHYSICAL_ADDRESS LowAddress,
  [in] PHYSICAL_ADDRESS HighAddress,
  [in] SIZE_T           TotalBytes
);

Parámetros

[in] LowAddress

Especifica el extremo inferior del intervalo de direcciones desde el que se puede asignar el almacenamiento de MDL.

[in] HighAddress

Especifica el extremo superior del intervalo de direcciones desde el que se puede asignar el almacenamiento de MDL.

[in] TotalBytes

Especifica el número total de bytes que se van a asignar para MDL. Este método siempre asigna un número entero de páginas de memoria.

Valor devuelto

AllocateContiguousPagesForMdl devuelve un puntero a un MDL (PMDL) que describe una lista de páginas de memoria física. Si el método no puede asignar el búfer solicitado, devuelve NULL.

Comentarios

El controlador llama a este método para asignar un bloque de páginas de memoria físicamente contiguas. Todas las páginas de memoria física de MDL se encuentran dentro del intervalo de direcciones especificado por los parámetros LowAddress y HighAddress . Si hay suficiente memoria disponible, la asignación de memoria es el tamaño solicitado redondeado hasta la página siguiente; de lo contrario, se produce un error en la llamada.

Después de que un sistema se haya estado ejecutando durante algún tiempo, el grupo de memoria no paginada del sistema tiende a fragmentarse, lo que aumenta la probabilidad de que se produzca un error en una solicitud para asignar un bloque grande de memoria física contigua. Si el controlador DMA del dispositivo de audio no requiere que las páginas de memoria física sean contiguas, el controlador debe llamar a IPortWaveRTStream::AllocatePagesForMdl en su lugar. A diferencia AllocateContiguousPagesForMdlde , el método AllocatePagesForMdl no se ve afectado por la fragmentación de memoria.

El AllocateContiguousPagesforMdl método asigna páginas de memoria bloqueadas (no paginadas), pero sin asignar. Si el controlador de minipuerto requiere acceso de software a esta memoria, el controlador de minipuerto debe realizar una llamada posterior a IPortWaveRTStream::MapAllocatedPages para asignar las páginas al espacio de direcciones en modo kernel.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y en sistemas operativos Windows posteriores.
Plataforma de destino Universal
Encabezado portcls.h
IRQL Nivel pasivo

Consulte también

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages