Поделиться через


Метод IPortWaveRTStream::AllocateContiguousPagesForMdl (portcls.h)

Метод AllocateContiguousPagesForMdl выделяет список непрерывных несмежных страниц физической памяти и возвращает указатель на список дескрипторов памяти (MDL), описывающий их.

Синтаксис

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

Параметры

[in] LowAddress

Указывает низкий предел диапазона адресов, из которого можно выделить хранилище для MDL.

[in] HighAddress

Задает высокий предел диапазона адресов, из которого можно выделить хранилище для MDL.

[in] TotalBytes

Задает общее количество байтов, выделяемых для MDL. Этот метод всегда выделяет целое количество страниц памяти.

Возвращаемое значение

AllocateContiguousPagesForMdl возвращает указатель на MDL (PMDL), описывающий список страниц физической памяти. Если методу не удается выделить запрошенный буфер, он возвращает значение NULL.

Комментарии

Драйвер вызывает этот метод для выделения блока физически смежных страниц памяти. Все страницы физической памяти в MDL попадают в диапазон адресов, заданный параметрами LowAddress и HighAddress . Если доступно достаточно памяти, выделение памяти — это запрошенный размер, округленный до следующей страницы; В противном случае вызов завершается ошибкой.

После того как система работает в течение некоторого времени, пул системной памяти, как правило, становится фрагментированной, что повышает вероятность того, что запрос на выделение большого блока непрерывной физической памяти завершится ошибкой. Если контроллерУ DMA звукового устройства не требуется, чтобы страницы физической памяти были непрерывными, драйвер должен вызвать IPortWaveRTStream::AllocatePagesForMdl . В отличие от AllocateContiguousPagesForMdlметода AllocatePagesForMdl фрагментация памяти не влияет.

Метод AllocateContiguousPagesforMdl выделяет страницы памяти, которые заблокированы (не загружены), но не сопоставлены. Если драйверу мини-порта требуется программный доступ к этой памяти, драйвер мини-порта должен выполнить последующий вызов IPortWaveRTStream::MapAllocatedPages , чтобы сопоставить страницы с адресным пространством в режиме ядра.

Требования

Требование Значение
Минимальная версия клиента Доступно в Операционных системах Windows Vista и более поздних версий.
Целевая платформа Универсальное
Верхняя часть portcls.h
IRQL Пассивный уровень

См. также раздел

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages