Поделиться через


C30032

предупреждение C30032: вызов функции выделения памяти и принудительное выполнение запроса исполняемой памяти с помощью директивы POOL_NX_OPTOUT

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

Директива препроцессора POOL_NX_OPTOUT предотвращает автоматическое повышение уровня небезопасных типов (MM_PAGE_PRIORITY и POOL_TYPE) до безопасных типов (например, NonPagedPool в NonPagedPoolNx). Использование POOL_NX_OPTOUT в источниках, скорее всего, по умолчанию. Если это так, и требуется исполняемая память, вы можете отключить предупреждение с помощью pragma Prefast для подавления предупреждающих сообщений. Этот тип выделения не разрешен в Windows 10 системах, которые согласились на дополнительную защиту памяти.

Примере

Следующий код создает это предупреждение:

В файле sources:

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

в файле кода:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);

Следующий код позволяет избежать этого предупреждения:

В файле sources добавьте:

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

в файле кода:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);