Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
avertissement C30031 : Appel d’une fonction d’allocation de mémoire et passage d’un paramètre qui indique la mémoire exécutable
L’analyse du code a détecté l’utilisation de POOL_NX_OPTIN et ExInitializeDriverRuntime(DrvRtPoolNxOptIn) a été appelée avant la fonction d’entrée (par exemple, DriverEntry() ou DllInitialize()). Il est possible que la fonction d’entrée appelle indirectement ExInitializeDriverRuntime(DrvRtPoolNxOptIn), auquel cas l’erreur peut être supprimée (voir Pragma Prefast to Suppress Warning Messages).
BANNED_MEM_ALLOCATION_MAYBE_SAFE
exemple de
Le code suivant dans le fichier sources génère cet avertissement :
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
Dans le fichier de code
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
Le code suivant évite cet avertissement :
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}