Метод 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 | Пассивный уровень |