共用方式為


C30031

警告 C30031:呼叫記憶體配置函式,並傳遞指出可執行記憶體的參數

程序代碼分析偵測到使用 POOL_NX_OPTINExInitializeDriverRuntime(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);
…
}