Condividi tramite


C30032

avviso C30032: Chiamata di una funzione di allocazione della memoria e forzare la richiesta di memoria eseguibile tramite l'uso della direttiva POOL_NX_OPTOUT

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

La direttiva preprocessore POOL_NX_OPTOUT impedisce la promozione automatica di tipi non sicuri (MM_PAGE_PRIORITY e POOL_TYPE) a tipi sicuri (ad esempio, NonPagedPool a NonPagedPoolNx). È probabile che l'uso di POOL_NX_OPTOUT nelle origini sia in base alla progettazione. Se questa è per progettazione e memoria eseguibile è necessaria, è possibile eliminare l'avviso con Pragma Prefast per eliminare i messaggi di avviso. Questo tipo di allocazione non è consentito nei sistemi Windows 10 che hanno consenso esplicito su protezioni di memoria aggiuntive.

Esempio

Il codice seguente genera questo avviso:

Nel file di origini:

C_DEFINES=$(C_DEFINES) –DUNICODE -DPOOL_NX_OPTOUT=1

nel file di codice:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);

Il codice seguente evita questo avviso:

Nel file di origini aggiungere:

C_DEFINES=$(C_DEFINES) -DUNICODE -DPOOL_NX_OPTIN_AUTO=1

nel file di codice:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);