Fungsi IsBadReadPtr (winbase.h)
Memverifikasi bahwa proses panggilan memiliki akses baca ke rentang memori yang ditentukan.
Sintaks
BOOL IsBadReadPtr(
[in] const VOID *lp,
[in] UINT_PTR ucb
);
Parameter
[in] lp
Penunjuk ke byte pertama blok memori.
[in] ucb
Ukuran blok memori, dalam byte. Jika parameter ini nol, nilai yang dikembalikan adalah nol.
Menampilkan nilai
Jika proses panggilan memiliki akses baca ke semua byte dalam rentang memori yang ditentukan, nilai yang dikembalikan adalah nol.
Jika proses panggilan tidak memiliki akses baca ke semua byte dalam rentang memori yang ditentukan, nilai yang dikembalikan bukan nol.
Jika aplikasi dikompilasi sebagai versi penelusuran kesalahan, dan prosesnya tidak memiliki akses baca ke semua byte dalam rentang memori yang ditentukan, fungsi menyebabkan pernyataan dan memecah ke debugger. Meninggalkan debugger, fungsi berlanjut seperti biasa, dan mengembalikan nilai bukan nol. Perilaku ini dirancang, sebagai bantuan penelusuran kesalahan.
Keterangan
Fungsi ini biasanya digunakan saat bekerja dengan pointer yang dikembalikan dari pustaka pihak ketiga, di mana Anda tidak dapat menentukan perilaku manajemen memori di DLL pihak ketiga.
Utas dalam suatu proses diharapkan untuk bekerja sama sia-sia sehingga seseorang tidak akan membebaskan memori yang dibutuhkan yang lain. Penggunaan fungsi ini tidak meniadakan kebutuhan untuk melakukan ini. Jika ini tidak dilakukan, aplikasi mungkin gagal dengan cara yang tidak dapat diprediksi.
Dereferensi pointer yang berpotensi tidak valid dapat menonaktifkan ekspansi tumpukan di utas lain. Utas yang menghabiskan tumpukannya, ketika ekspansi tumpukan telah dinonaktifkan, menghasilkan penghentian segera proses induk, tanpa jendela kesalahan pop-up atau informasi diagnostik.
Jika proses panggilan memiliki akses baca ke beberapa, tetapi tidak semua, dari byte dalam rentang memori yang ditentukan, nilai yang dikembalikan bukan nol.
Dalam lingkungan multitugas preemptive, dimungkinkan bagi beberapa utas lain untuk mengubah akses proses ke memori yang sedang diuji. Bahkan ketika fungsi menunjukkan bahwa proses memiliki akses baca ke memori yang ditentukan, Anda harus menggunakan penanganan pengecualian terstruktur saat mencoba mengakses memori. Penggunaan penanganan pengecualian terstruktur memungkinkan sistem untuk memberi tahu proses jika terjadi pengecualian pelanggaran akses, memberikan proses kesempatan untuk menangani pengecualian.
Persyaratan
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winbase.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |