Aracılığıyla paylaş


C30035

uyarı C30035: Başlatma işlevinin içinden yapılması gereken bir işleve çağrı yapıldı (örneğin, DriverEntry() veya DllInitialize()). PREfast, çağrının başlatma işlevinden yapılıp yapılmadığını belirleyemedi.

BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE

Kod POOL_NX_OPTIN makroyla derlendi, ancak başlatma DriverEntry() veya DllInitialize()içinde gerçekleşmedi. Bunu düzeltmek için çağrıyı başlatma işlevinin içine taşıyın.

Örneği

Aşağıdaki kod bu uyarıyı oluşturur.

Kaynak dosyasında:

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);
}

Aşağıdaki kod bu uyarıyı önler:

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

    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}