C30031
avviso C30031: Chiamata di una funzione di allocazione della memoria e passaggio di un parametro che indica la memoria eseguibile
L'analisi del codice ha rilevato l'uso di POOL_NX_OPTIN e ExInitializeDriverRuntime(DrvRtPoolNxOptIn) è stato chiamato prima della funzione di immissione (ad esempio , DriverEntry() o DllInitialize()). È possibile che la funzione di voce chiami indirettamente ExInitializeDriverRuntime(DrvRtPoolNxOptIn), nel qual caso l'errore può essere eliminato (vedere Pragma Prefast to Suppress Warning Messages).
BANNED_MEM_ALLOCATION_MAYBE_SAFE
Esempio
Il codice seguente nel file di origini genera questo avviso:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
Nel file di codice
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
Il codice seguente evita questo avviso:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}