C30035
avertissement C30035 : Un appel a été effectué à une fonction qui doit être effectuée à partir de la fonction d’initialisation (par exemple, DriverEntry() ou DllInitialize()). PREfast n’a pas pu déterminer si l’appel a été effectué à partir de la fonction d’initialisation.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Le code a été compilé avec la macro POOL_NX_OPTIN , mais l’initialisation n’a pas eu lieu à l’intérieur de DriverEntry() ou DllInitialize(). Pour résoudre ce problème, déplacez l’appel à l’intérieur de la fonction d’initialisation.
Exemple
Le code suivant génère cet avertissement.
Dans le fichier source :
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);
}
Le code suivant évite cet avertissement :
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}