C30031
警告 C30031:呼叫記憶體配置函式,並傳遞指出可執行記憶體的參數
程序代碼分析偵測到使用 POOL_NX_OPTIN 和 ExInitializeDriverRuntime (DrvRtPoolNxOptIn) (,例如 DriverEntry () 或 DllInitialize () ) 。 專案函式可能會間接呼叫 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);
…
}