Partilhar via


C30032

aviso C30032: Chamando uma função de alocação de memória e forçando a solicitação de memória executável através do uso da diretiva POOL_NX_OPTOUT

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

A diretiva de pré-processador POOL_NX_OPTOUT impede a promoção automática de tipos não seguros (MM_PAGE_PRIORITY e POOL_TYPE) para tipos seguros (por exemplo, NonPagedPool para NonPagedPoolNx). O uso de POOL_NX_OPTOUT em suas fontes é provavelmente por design. Se isso for por design e a memória executável for necessária, então você pode suprimir o aviso com Pragma Prefast para suprimir mensagens de aviso. Este tipo de alocação não é permitido em sistemas Windows 10 que optaram por proteções de memória adicionais.

Exemplo

O código a seguir gera esse aviso:

No ficheiro de códigos-fonte:

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

No arquivo de código:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);

O código a seguir evita esse aviso:

No arquivo de códigos-fonte, adicione:

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

No arquivo de código:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);