C30032
предупреждение C30032: вызов функции выделения памяти и принудительное выполнение запроса исполняемой памяти с помощью директивы POOL_NX_OPTOUT
BANNED_MEM_ALLOCATION_FORCE_UNSAFE
Директива препроцессора POOL_NX_OPTOUT предотвращает автоматическое повышение уровня небезопасных типов (MM_PAGE_PRIORITY и POOL_TYPE) до безопасных типов (например, NonPagedPool в NonPagedPoolNx). Использование POOL_NX_OPTOUT в источниках, скорее всего, по умолчанию. Если это так, и требуется исполняемая память, вы можете отключить предупреждение с помощью pragma Prefast для подавления предупреждающих сообщений. Этот тип выделения не разрешен в Windows 10 системах, которые согласились на дополнительную защиту памяти.
Примере
Следующий код создает это предупреждение:
В файле sources:
C_DEFINES=$(C_DEFINES) –DUNICODE -DPOOL_NX_OPTOUT=1
в файле кода:
pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);
Следующий код позволяет избежать этого предупреждения:
В файле sources добавьте:
C_DEFINES=$(C_DEFINES) -DUNICODE -DPOOL_NX_OPTIN_AUTO=1
в файле кода:
pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);