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);
…
}