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


C30032

предупреждение C30032: вызов функции выделения памяти и принудительное выполнение запроса исполняемой памяти с помощью директивы POOL_NX_OPTOUT

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

Директива препроцессора POOL_NX_OPTOUT предотвращает автоматическое продвижение небезопасных типов (MM_PAGE_PRIORITY и POOL_TYPE) для безопасных типов (например, NonPagedPool to NonPagedPoolNx). Использование POOL_NX_OPTOUT в источниках, скорее всего, по проектированию. Если это необходимо для разработки и исполняемой памяти, можно отключить предупреждение с помощью предварительной Pragma Prefast для подавления предупреждений. Этот тип выделения не разрешен в системах Windows 10, которые приняли участие в дополнительных защитах памяти.

Пример

Следующий код создает это предупреждение:

В файле источников:

C_DEFINES=$(C_DEFINES) –DUNICODE -DPOOL_NX_OPTOUT=1

в файле кода:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);

Следующий код избегает этого предупреждения:

В файле источников добавьте:

C_DEFINES=$(C_DEFINES) -DUNICODE -DPOOL_NX_OPTIN_AUTO=1

в файле кода:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);