다음을 통해 공유


C30035

경고 C30035: 초기화 함수(예: DriverEntry() 또는 DllInitialize()) 내부에서 수행해야 하는 함수를 호출했습니다. PREfast가 초기화 함수에서 호출되었는지 여부를 확인할 수 없습니다.

BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE

코드는 POOL_NX_OPTIN 매크로로 컴파일되었지만 DriverEntry() 또는 DllInitialize() 내에서 초기화가 발생하지 않았습니다. 이 문제를 해결하려면 초기화 함수 내에서 호출을 이동합니다.

예제

다음 코드는 이 경고를 생성합니다.

원본 파일에서 다음을 수행합니다.

C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
NTSTATUS
DriverEntry (
    _In_ PDRIVER_OBJECT DriverObject,
    _In_ PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;

    MakeSafeInitialization ();
…
}

void MakeSafeInitialization()
{
    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}

다음 코드는 이 경고를 방지합니다.

NTSTATUS
DriverEntry (
    _In_ PDRIVER_OBJECT DriverObject,
    _In_ PUNICODE_STRING RegistryPath
    )
{
    NTSTATUS status;

    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}