Freigeben über


C30031

Warnung C30031: Aufrufen einer Speicherzuweisungsfunktion und Übergeben eines Parameters, der ausführbaren Speicher angibt

Die Codeanalyse hat die Verwendung von POOL_NX_OPTIN und ExInitializeDriverRuntime(DrvRtPoolNxOptIn) erkannt, vor der Eintragsfunktion aufgerufen wurde (z. B. DriverEntry() oder DllInitialize()). Es ist möglich, dass die Eintragsfunktion indirekt ExInitializeDriverRuntime(DrvRtPoolNxOptIn)aufruft, in diesem Fall kann der Fehler unterdrückt werden (siehe Pragma Prefast to Suppress Warning Messages).

BANNED_MEM_ALLOCATION_MAYBE_SAFE

Beispiel

Der folgende Code in der Quelldatei generiert diese Warnung:

C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1

In der Codedatei

void MakeSafeInitialization()
{
    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}

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

    MakeSafeInitialization ();
…
}

Der folgende Code vermeidet diese Warnung:

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

    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}