C30035
aviso C30035: Foi feita uma chamada para uma função que deve ser feita de dentro da função de inicialização (por exemplo, DriverEntry() ou DllInitialize()). O PREfast não conseguiu determinar se a chamada foi feita a partir da função de inicialização.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
O código foi compilado com a macro POOL_NX_OPTIN, mas a inicialização não ocorreu dentro de DriverEntry() ou DllInitialize(). Para corrigir isso, mova a chamada dentro da função de inicialização.
Exemplo
O código a seguir gera esse aviso.
No ficheiro de códigos-fonte:
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);
}
O código a seguir evita esse aviso:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}