Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма MmAllocateNonCachedMemory выделяет диапазон виртуальных адресов, не кэшируемых и выровненных в кэше памяти.
Синтаксис
PVOID MmAllocateNonCachedMemory(
[in] SIZE_T NumberOfBytes
);
Параметры
[in] NumberOfBytes
Задает размер в байтах выделенного диапазона.
Возвращаемое значение
Если запрошенная память не может быть выделена, возвращаемое значение NULL. В противном случае это базовый виртуальный адрес выделенного диапазона.
Замечания
MmAllocateNonCachedMemory можно вызвать из подпрограммы DriverEntry, чтобы выделить не кэшированный блок виртуальной памяти для различных буферов, относящихся к устройству. Функция всегда возвращает полный размер страницы виртуальной памяти, неупакованной памяти, независимо от запрошенного размера выделения.
Не кэшированные выделения выравниваются по целочисленной части размера строки кэша данных процессора, чтобы предотвратить проблемы с кэшем и согласованности.
Страницы физической памяти, которые MmAllocateNonCachedMemory возвращаются, как правило, не являются смежными страницами.
Память, которая mmAllocateNonCachedMemory выделяется неинициализировано. Драйвер в режиме ядра должен сначала ноль этой памяти, если он будет отображаться в программном обеспечении в пользовательском режиме (чтобы избежать утечки потенциально привилегированного содержимого).
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | ntddk.h (include Ntddk.h) |
| библиотеки | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <=APC_LEVEL |
| правил соответствия DDI | HwStorPortProhibitedDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport) |