C30031
Warnung C30031: Aufrufen einer Speicherzuweisungsfunktion und Übergeben eines Parameters, der ausführbaren Arbeitsspeicher angibt
Bei der Codeanalyse wurde die Verwendung von POOL_NX_OPTIN erkannt, und ExInitializeDriverRuntime(DrvRtPoolNxOptIn) wurde vor der Entry-Funktion aufgerufen (z. B. DriverEntry() oder DllInitialize()). Es ist möglich, dass die Entry-Funktion 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);
…
}