Método IPortWaveRTStream::AllocatePagesForMdl (portcls.h)
El AllocatePagesForMdl
método asigna una lista de páginas de memoria física no paginadas y devuelve un puntero a una lista de descriptores de memoria (MDL) que las describe.
Sintaxis
PMDL AllocatePagesForMdl(
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
Parámetros
[in] HighAddress
Especifica el extremo superior del intervalo de direcciones desde el que se puede asignar el almacenamiento de MDL. El extremo inferior del intervalo de direcciones es implícitamente cero.
[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
AllocatePagesforMdl
devuelve un puntero a un MDL 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
Dado que la pila de audio de Windows no admite un mecanismo para expresar los requisitos de alineación de acceso a la memoria para los búferes de audio, los controladores de audio deben seleccionar un tipo de almacenamiento en caché para los búferes de memoria asignados que no imponen requisitos de alineación específicos de la plataforma. Es decir, el tipo de almacenamiento en caché utilizado por el controlador de audio para los búferes de memoria asignados no debe suponer los requisitos de alineación de memoria para ninguna plataforma específica.
El controlador llama a este método para asignar memoria que se puede asignar al modo de usuario o kernel. Las páginas de memoria física de MDL no son necesariamente contiguas en la memoria física, pero todas se encuentran dentro del intervalo de direcciones especificado.
El método siempre asigna un número entero de páginas. Si hay suficiente memoria disponible, la asignación de memoria es el tamaño solicitado redondeado a la página siguiente. De lo contrario, la asignación de memoria puede ser menor que el tamaño solicitado. El autor de la llamada debe comprobar cuántos bytes se asignan realmente.
Si el controlador DMA del dispositivo de audio requiere que las páginas de memoria física del búfer sean contiguas, el controlador debe llamar a IPortWaveRTStream::AllocateContiguousPagesForMdl en su lugar.
Al igual que la función MmAllocatePagesForMdl , el AllocatePagesforMdl
método asigna páginas de memoria bloqueadas (no paginadas) pero sin asignar. Si el controlador de minipuerto quiere configurar el 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 |