C30032

警告 C30032:调用内存分配函数,并使用 POOL_NX_OPTOUT 指令强制请求可执行内存

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

预处理器指令 POOL_NX_OPTOUT 阻止将非安全类型(MM_PAGE_PRIORITYPOOL_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);