共用方式為


C30031

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

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