C30035
Warnung C30035: Es wurde ein Aufruf einer Funktion ausgeführt, die innerhalb der Initialisierungsfunktion erfolgen muss (z. B . DriverEntry() oder DllInitialize()). PREfast konnte nicht feststellen, ob der Aufruf über die Initialisierungsfunktion erfolgt ist.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Der Code wurde mit dem POOL_NX_OPTIN Makro kompiliert, aber die Initialisierung wurde nicht innerhalb von DriverEntry() oder DllInitialize() durchgeführt. Verschieben Sie den Aufruf innerhalb der Initialisierungsfunktion, um dies zu beheben.
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);
…
}