C30035
peringatan C30035: Panggilan dilakukan ke fungsi yang harus dilakukan dari dalam fungsi inisialisasi (misalnya, DriverEntry() atau DllInitialize()). PREfast tidak dapat menentukan apakah panggilan dilakukan dari fungsi inisialisasi.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Kode dikompilasi dengan makro POOL_NX_OPTIN tetapi inisialisasi tidak terjadi di dalam DriverEntry() atau DllInitialize(). Untuk memperbaikinya, pindahkan panggilan ke dalam fungsi inisialisasi.
Contoh
Kode berikut menghasilkan peringatan ini.
Dalam file sumber:
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);
}
Kode berikut menghindari peringatan ini:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk