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