Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
peringatan C30031: Memanggil fungsi alokasi memori dan meneruskan parameter yang menunjukkan memori yang dapat dieksekusi
Analisis Kode mendeteksi penggunaan POOL_NX_OPTIN dan ExInitializeDriverRuntime(DrvRtPoolNxOptIn) dipanggil sebelum fungsi entri (misalnya, DriverEntry() atau DllInitialize()). Ada kemungkinan bahwa fungsi entri secara tidak langsung memanggil ExInitializeDriverRuntime(DrvRtPoolNxOptIn), dalam hal ini kesalahan dapat ditekan (lihat Pragma Prefast untuk Menekan Pesan Peringatan).
BANNED_MEM_ALLOCATION_MAYBE_SAFE
Contoh
Kode berikut dalam file sumber menghasilkan peringatan ini:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
Dalam file kode
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
Kode berikut menghindari peringatan ini:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}