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系统上不允许使用此类型的分配。

示例

下面的代码生成此警告:

在源文件中:

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);