Fungsi IsBadStringPtrA (winbase.h)
Memverifikasi bahwa proses panggilan memiliki akses baca ke rentang memori yang ditentukan.
Sintaksis
BOOL IsBadStringPtrA(
[in] LPCSTR lpsz,
[in] UINT_PTR ucchMax
);
Parameter
[in] lpsz
Penunjuk ke string yang dihentikan null, baik Unicode atau ASCII.
[in] ucchMax
Ukuran maksimum string, dalam TCHAR. Fungsi memeriksa akses baca dalam semua karakter hingga karakter null penghentian string atau hingga jumlah karakter yang ditentukan oleh parameter ini, mana yang lebih kecil. Jika parameter ini nol, nilai yang dikembalikan adalah nol.
Mengembalikan nilai
Jika proses panggilan memiliki akses baca ke semua karakter hingga karakter null penghentian string atau hingga jumlah karakter yang ditentukan oleh ucchMax, nilai yang dikembalikan adalah nol.
Jika proses panggilan tidak memiliki akses baca ke semua karakter hingga karakter null penghentian string atau hingga jumlah karakter yang ditentukan oleh ucchMax, nilai yang dikembalikan bukan nol.
Jika aplikasi dikompilasi sebagai versi penelusuran kesalahan, dan prosesnya tidak memiliki akses baca ke seluruh rentang memori yang ditentukan, fungsi tersebut menyebabkan pernyataan dan masuk ke debugger. Meninggalkan debugger, fungsi berlanjut seperti biasa, dan mengembalikan nilai bukan nol Perilaku ini dirancang, sebagai bantuan penelusuran kesalahan.
Komentar
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 singgahan 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 rentang memori yang ditentukan, nilai pengembalian 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.
Nota
Header winbase.h mendefinisikan IsBadStringPtr sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
Platform Target |
Windows |
Header |
winbase.h (termasuk Windows.h) |
Pustaka |
Kernel32.lib |
DLL |
Kernel32.dll |