警告 C30031:调用内存分配函数并传递指示可执行内存的参数
在输入函数(例如,DriverEntry() 或 DllInitialize()之前调用了使用 POOL_NX_OPTIN 和 ExInitializeDriverRuntime(DrvRtPoolNxOptIn) 的代码分析。 入口函数可能间接调用 ExInitializeDriverRuntime(DrvRtPoolNxOptIn),在这种情况下,可以抑制错误(请参阅 Pragma Prefast 以禁止显示警告消息)。
BANNED_MEM_ALLOCATION_MAYBE_SAFE
示例
源文件中的以下代码生成以下警告:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
在代码文件中
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
以下代码避免出现以下警告:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}