C30031
警告 C30031: メモリ割り当て関数を呼び出し、実行可能なメモリを示すパラメーターを渡す
コード分析では、エントリ関数 (DriverEntry() または DllInitialize() など) の前に POOL_NX_OPTIN および ExInitializeDriverRuntime(DrvRtPoolNxOptIn) の使用が呼び出されたことを検出しました。 エントリ関数が ExInitializeDriverRuntime(DrvRtPoolNxOptIn) を間接的に呼び出す可能性があります。この場合、エラーを抑制できます (「Pragma Prefast to Suppress Warning Messages」を参照)。
BANNED_MEM_ALLOCATION_MAYBE_SAFE
例
ソース ファイル内の次のコードでは、この警告が生成されます。
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
コード ファイル内
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
次のコードでは、この警告が回避されます。
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}