Tentang Strsafe.h
Penanganan buffer yang buruk terkait dengan banyak isu keamanan yang melibatkan buffer overruns. Fungsi yang ditentukan dalam Strsafe.h menyediakan pemrosesan tambahan untuk penanganan buffer yang tepat dalam kode Anda. Untuk alasan ini, mereka dimaksudkan untuk mengganti rekan C/C++ bawaan mereka serta implementasi Windows tertentu. Strsafe.h tersedia di Windows SDK yang dimulai dengan Windows XP dengan Paket Layanan 2 (SP2).
Keuntungan dari fungsi Strsafe meliputi:
Ukuran buffer tujuan selalu disediakan untuk fungsi untuk memastikan bahwa fungsi tidak menulis melewati akhir buffer.
Buffer dijamin berakhir dengan null, meskipun operasi memotong hasil yang diinginkan.
Semua fungsi mengembalikan nilai HRESULT , dengan hanya satu kemungkinan kode keberhasilan (S_OK).
Setiap fungsi tersedia dalam jumlah karakter yang sesuai ("cch") atau jumlah byte ("cb").
Sebagian besar fungsi memiliki versi yang diperluas ("Ex") yang tersedia untuk fungsionalitas tingkat lanjut.
Lihat bagian berikut untuk detail.
Fungsi Jumlah Karakter
Fungsi berikut menggunakan jumlah karakter daripada jumlah byte.
Fungsi | Menggantikan |
---|---|
, | |
Fungsi Penghitungan Byte
Fungsi berikut menggunakan jumlah byte daripada jumlah karakter.
Fungsi | Menggantikan |
---|---|
Menggunakan Strsafe.h
Untuk menggunakan fungsi Strsafe sebaris, sertakan file header seperti yang ditunjukkan di sini, mengikuti pernyataan #include untuk semua file header lainnya.
#include <strsafe.h>
Untuk menggunakan fungsi dalam formulir pustaka, sertakan pernyataan berikut sebelum menyertakan Strsafe.h. Namun, disarankan agar Anda menggunakan fungsi inline.
#define STRSAFE_LIB
Catatan
: Fungsi berikut harus digunakan sebagai fungsi sebaris: StringCbGets, StringCbGetsEx, StringCchGets, dan StringCchGetsEx.
Ketika Anda menyertakan Strsafe.h dalam file Anda, fungsi lama yang digantikan oleh fungsi Strsafe.h tidak akan digunakan lagi. Upaya untuk menggunakan fungsi lama ini akan mengakibatkan kesalahan kompilator yang memberi tahu Anda untuk menggunakan fungsi yang lebih baru. Jika Anda ingin mengambil alih perilaku ini, sertakan pernyataan berikut sebelum menyertakan Strsafe.h.
#define STRSAFE_NO_DEPRECATE
Untuk mengizinkan hanya fungsi jumlah karakter, sertakan pernyataan berikut sebelum menyertakan Strsafe.h.
#define STRSAFE_NO_CB_FUNCTIONS
Untuk mengizinkan hanya fungsi jumlah byte, sertakan pernyataan berikut sebelum menyertakan Strsafe.h.
#define STRSAFE_NO_CCH_FUNCTIONS
Catatan
Anda dapat menentukan STRSAFE_NO_CB_FUNCTIONS atau STRSAFE_NO_CCH_FUNCTIONS, tetapi tidak keduanya.
Beberapa fungsi Strsafe memiliki versi yang mendukung kesadaran lokal. Secara default, header tidak mendeklarasikan fungsi-fungsi ini. Untuk mengaktifkan deklarasi ini, sertakan pernyataan makro berikut sebelum menyertakan Strsafe.h.
#define STRSAFE_LOCALE_FUNCTIONS
Panjang string maksimum yang didukung adalah 2.147.483.647 (STRSAFE_MAX_CCH) karakter, baik ANSI atau Unicode.
Topik terkait