Fungsi IsBadStringPtrW (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 IsBadStringPtrW(
  [in] LPCWSTR  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 di semua karakter hingga karakter null yang mengakhiri string atau hingga jumlah karakter yang ditentukan oleh parameter ini, mana pun 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 yang mengakhiri 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 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 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.

Catatan

Header winbase.h mendefinisikan IsBadStringPtr sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor 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

   
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

IsBadReadPtr

IsBadWritePtr