警告 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 系统上不允许这种分配。
示例
以下代码生成此警告:
在源文件中:
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);