C30035
Warnung C30035: Es wurde ein Aufruf an eine Funktion ausgeführt, die innerhalb der Initialisierungsfunktion erfolgen muss (z. B. DriverEntry() oder DllInitialize()). PREfast konnte nicht ermitteln, ob der Aufruf von der Initialisierungsfunktion ausgeführt wurde.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Der Code wurde mit dem POOL_NX_OPTIN Makro kompiliert, aber die Initialisierung ist nicht innerhalb DriverEntry() oder DllInitialize()aufgetreten. Um dies zu beheben, verschieben Sie den Aufruf innerhalb der Initialisierungsfunktion.
Beispiel
Der folgende Code generiert diese Warnung.
In der Quelldatei:
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);
}
Der folgende Code vermeidet diese Warnung:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}