C30029
Предупреждение. Вызов функции выделения памяти, которая запрашивает исполняемую память
Это предупреждение указывает, что используется функция, которая была заблокирована и имеет более надежную или безопасную замену. Эта конкретная ошибка указывает на использование API, который выделяет только исполняемый пул без паг.
Комментарии
Его следует использовать только в том случае, если требуется исполняемая память. Дополнительные сведения об этом см. в разделе Пул без выполнения (NX). Вы не можете указать параметры, которые изменят это поведение. Единственный способ устранить эту проблему — использовать альтернативную функцию, которая позволяет выделять неисполняемую память пула без загрузки. Список всех запрещенных функций, на которые распространяется эта ошибка, и рекомендуемые замены можно найти после следующего примера.
Имя анализа кода: BANNED_MEM_ALLOCATION_NOTYPE
Пример
Следующий код создает это предупреждение. Эта проблема связана с использованием MmMapIoSpace
:
MmMapIoSpace(PhysicalAddress, numberOfBytes, MmNonCached);
Следующий код позволяет избежать этого предупреждения, заменив на MmMapIoSpace
MmMapIoSpace
:
MmMapIoSpaceEx(PhysicalAddress, numberOfBytes, PAGE_NOCACHE | PAGE_READWRITE);
Запрещенные функции
Запрещенный API | Замена | Обоснование и примечания |
---|---|---|
MmMapIoSpace() |
MmMapIoSpaceEx() |
|
MmAllocateContiguousMemorySpecifyCache() |
MmAllocateContiguousNodeMemory() |
В зависимости от типа кэша параметр SpecifyCache можно использовать таким образом, чтобы ограничить его неисполняемой памятью. Однако использование NodeMemory обеспечит это. Дополнительные сведения см. в подразделе C30030 "Сведения о дефектах, связанных с типами кэша". |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по