다음을 통해 공유


C30031

경고 C30031: 메모리 할당 함수를 호출하고 실행 가능한 메모리를 나타내는 매개 변수 전달

코드 분석 결과 POOL_NX_OPTINExInitializeDriverRuntime(DrvRtPoolNxOptIn) ) 항목 함수(예: DriverEntry() 또는 DllInitialize()) 전에 호출되었습니다. 항목 함수는 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);
…
}