次の方法で共有


C30032

警告 C30032: メモリ割り当て関数を呼び出し、POOL_NX_OPTOUT ディレクティブを使用して実行可能なメモリの要求を強制する

BANNED_MEM_ALLOCATION_FORCE_UNSAFE

プリプロセッサ ディレクティブ POOL_NX_OPTOUT では、安全でない型 (MM_PAGE_PRIORITY および POOL_TYPE) を安全な型 (NonPagedPool to NonPagedPoolNx など) に自動昇格できなくなります。 ソースでの POOL_NX_OPTOUT の使用は、設計によって行われる可能性があります。 これが仕様であり、実行可能なメモリが必要な場合は、Pragma Prefast to Suppress Warning Messages で警告を抑制することができます。 この種類の割り当ては、追加のメモリ保護をオプトインした Windows 10 システムでは許可されません。

この警告が発生するコード例を次に示します。

ソース ファイル内:

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

コード ファイル内:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);

次のコードでは、この警告が回避されます。

ソース ファイルで、次の処理を追加します。

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

コード ファイル内:

pPtr = MmGetSystemAddressForMdlSafe( pMdl, NormalPagePriority);