Bagikan melalui


Fungsi SHUnicodeToUnicode (shlwapi.h)

[Fungsi ini tersedia melalui Windows XP dan Windows Server 2003. Ini mungkin diubah atau tidak tersedia dalam versi Windows berikutnya.]

Menyalin string Unicode.

Sintaks

int SHUnicodeToUnicode(
  [in]  PCWSTR pwzSrc,
  [out] PWSTR  pwzDst,
        int    cwchBuf
);

Parameter

[in] pwzSrc

Jenis: PCWSTR

Penunjuk ke string Unicode yang dihentikan null untuk disalin ke buffer output.

[out] pwzDst

Jenis: PWSTR

Penunjuk ke buffer output untuk menerima karakter yang disalin. Buffer harus cukup besar untuk berisi jumlah karakter WCHAR yang ditentukan oleh cwchBuf, termasuk ruang untuk karakter null yang mengakhiri.

cwchBuf

Jenis: int

Jumlah karakter WCHAR yang dapat dimuat oleh buffer yang diarahkan oleh parameter pwzDst . Parameter ini harus lebih besar dari nol.

Mengembalikan nilai

Jenis: int

Mengembalikan jumlah karakter WCHAR yang ditulis ke buffer output, termasuk karakter null yang mengakhiri. Mengembalikan 0 jika tidak berhasil.

Keterangan

Peringatan Keamanan: Menggunakan fungsi ini dengan tidak benar dapat membahayakan keamanan aplikasi Anda. Misalnya, jika buffer pwzDst tidak cukup besar untuk berisi jumlah karakter yang ditentukan oleh cwchBuf, buffer overrun dapat terjadi. Overrun buffer dapat menyebabkan penolakan serangan layanan terhadap aplikasi jika pelanggaran akses terjadi. Dalam kasus terburuk, buffer overrun mungkin memungkinkan penyerang untuk menyuntikkan kode yang dapat dieksekusi ke dalam proses Anda, terutama jika pwzDst adalah buffer berbasis tumpukan. Saat menyalin seluruh string, perhatikan bahwa sizeof mengembalikan jumlah byte, yang bukan nilai yang benar untuk digunakan untuk parameter cwchBuf . Sebagai gantinya, gunakan sizeof(pwzDst)/sizeof(WCHAR). Perhatikan bahwa teknik ini mengasumsikan bahwa pwzDst adalah array, bukan pointer. Perhatikan juga bahwa fungsi secara diam-diam memotong string output jika buffer tidak cukup besar. Ini dapat mengakibatkan kanonisisasi atau kerentanan keamanan lainnya.

Jika buffer pwzDst tidak cukup besar untuk berisi seluruh string output yang dikonversi, string dipotok agar sesuai dengan buffer. Tidak ada cara untuk mendeteksi bahwa untai (karakter) yang dikembalikan telah dipotok. Untai (karakter) akan selalu dihentikan null, bahkan jika telah dipotok. Ini memastikan bahwa tidak lebih dari karakter cwchBuf disalin ke pwzDst. Tidak ada upaya yang dilakukan untuk menghindari memotong string di tengah pasangan pengganti Unicode.

Jika buffer pwzSrc dan pwzDst tumpang tindih, perilaku fungsi tidak terdefinisi.

Catatan Jangan berasumsi bahwa fungsi tidak mengubah karakter apa pun dalam buffer output yang mengikuti karakter null penghentian string. Konten buffer output yang mengikuti karakter null yang mengakhiri string tidak terdefinisi, hingga dan menyertakan karakter terakhir dalam buffer.
 
SHTCharToUnicode didefinisikan sama dengan SHUnicodeToUnicode.

SHUnicodeToTChar didefinisikan sama dengan SHUnicodeToUnicode.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional, Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server, Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header shlwapi.h
DLL Shlwapi.dll (versi 5.0 atau yang lebih baru)

Lihat juga

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength