Fungsi IsBadReadPtr (winbase.h)

Memverifikasi bahwa proses panggilan memiliki akses baca ke rentang memori yang ditentukan.

Penting Fungsi ini usang dan tidak boleh digunakan. Terlepas dari namanya, itu tidak menjamin bahwa pointer valid atau bahwa memori yang ditujukan aman untuk digunakan. Untuk informasi selengkapnya, lihat Keterangan di halaman ini.
 

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

Lihat juga

IsBadCodePtr

IsBadStringPtr

IsBadWritePtr