C30031
경고 C30031: 메모리 할당 함수 호출 및 실행 가능한 메모리를 나타내는 매개 변수 전달
코드 분석에서 입력 함수(예: DriverEntry() 또는 DllInitialize())가 호출되기 전에 POOL_NX_OPTIN 및 ExInitializeDriverRuntime(DrvRtPoolNxOptIn)의 사용을 감지했습니다. 항목 함수가 ExInitializeDriverRuntime(DrvRtPoolNxOptIn)을 간접적으로 호출할 수 있습니다. 이 경우 오류를 표시하지 않을 수 있습니다( 경고 메시지를 표시하지 않는 Pragma Prefast 참조).
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);
…
}