Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 immissione chiami indirettamente ExInitializeDriverRuntime(DrvRtPoolNxOptIn), nel qual caso l'errore può essere eliminato (vedere Pragma Prefast per eliminare i messaggi di avviso).
BANNED_MEM_ALLOCATION_MAYBE_SAFE
Esempio di
Il codice seguente nel file sources 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);
…
}