C30035

peringatan C30035: Panggilan dilakukan ke fungsi yang harus dilakukan dari dalam fungsi inisialisasi (misalnya, DriverEntry() atau DllInitialize()). PREfast tidak dapat menentukan apakah panggilan dilakukan dari fungsi inisialisasi.

BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE

Kode dikompilasi dengan makro POOL_NX_OPTIN tetapi inisialisasi tidak terjadi di dalam DriverEntry() atau DllInitialize(). Untuk memperbaikinya, pindahkan panggilan ke dalam fungsi inisialisasi.

Contoh

Kode berikut menghasilkan peringatan ini.

Dalam file sumber:

C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
NTSTATUS
DriverEntry (
    _In_ PDRIVER_OBJECT DriverObject,
    _In_ PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;

    MakeSafeInitialization ();
…
}

void MakeSafeInitialization()
{
    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}

Kode berikut menghindari peringatan ini:

NTSTATUS
DriverEntry (
    _In_ PDRIVER_OBJECT DriverObject,
    _In_ PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;

    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}