Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
upozornění C30035: Volání funkce, která musí být provedena z inicializační funkce (například DriverEntry() nebo DllInitialize()). PrEfast nemohl určit, zda bylo volání provedeno z inicializační funkce.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Kód byl zkompilován pomocí makra POOL_NX_OPTIN, ale inicializace neproběhla uvnitř DriverEntry() nebo DllInitialize(). Tento problém vyřešíte přesunutím volání uvnitř inicializační funkce.
příklad
Následující kód vygeneruje toto upozornění.
V souboru zdrojů:
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);
}
Následující kód se vyhne tomuto upozornění:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}