경고 C30031: 메모리 할당 함수를 호출하고 실행 가능한 메모리를 나타내는 매개 변수 전달
코드 분석 결과 POOL_NX_OPTIN 및 ExInitializeDriverRuntime(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);
…
}