SHUnicodeToUnicode 函式 (shlwapi.h)
[此函式可透過 Windows XP 和 Windows Server 2003 取得。 在後續版本的 Windows 中,它可能會改變或無法使用。
複製 Unicode 字串。
語法
int SHUnicodeToUnicode(
[in] PCWSTR pwzSrc,
[out] PWSTR pwzDst,
int cwchBuf
);
參數
[in] pwzSrc
類型: PCWSTR
要複製到輸出緩衝區之 Null 終止 Unicode 字串的指標。
[out] pwzDst
類型: PWSTR
要接收所複製字元之輸出緩衝區的指標。 緩衝區必須夠大,才能包含 cwchBuf 所指定的 WCHAR 字元數目,包括終止 Null 字元的空間。
cwchBuf
類型: int
pwzDst 參數所指向之緩衝區可包含的 WCHAR 字元數目。 這個參數必須大於零。
傳回值
類型: int
傳回寫入輸出緩衝區的 WCHAR 字元數目,包括終止的 Null 字元。 如果失敗,則傳回 0。
備註
安全性警告: 使用此函式不正確可能會危害應用程式的安全性。 例如,如果 pwzDst 緩衝區不夠大,無法包含 cwchBuf 所指定的字元數,就會發生緩衝區溢出。 如果發生存取違規,緩衝區溢出可能會對應用程式造成拒絕服務攻擊。 在最糟的情況下,緩衝區溢出可能會讓攻擊者將可執行的程式代碼插入您的進程,特別是 pwzDst 是堆棧式緩衝區時。 複製整個字串時,請注意 sizeof 會傳回位元組數目,這不是用於 cwchBuf 參數的正確值。 請改用 sizeof (pwzDst) /sizeof (WCHAR) 。 請注意,這項技術假設 pwzDst 是陣列,而不是指標。 另請注意,如果緩衝區不夠大,函式會以無訊息方式截斷輸出字串。 這可能會導致標準化或其他安全性弱點。
如果 pwzDst 緩衝區不夠大,無法包含整個轉換的輸出字串,則會截斷字串以符合緩衝區。 無法偵測傳回字串已被截斷。 即使字串已被截斷,字串一律會以 Null 終止。 這可確保不會超過 cwchBuf 字元複製到 pwzDst。 不嘗試避免截斷 Unicode 代理字組中間的字串。
如果 pwzSrc 和 pwzDst 緩衝區重疊,則未定義函式的行為。
SHUnicodeToTChar 定義為與 SHUnicodeToUnicode 相同。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版、Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server、Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shlwapi.h |
Dll | Shlwapi.dll (5.0 版或更新版本) |
另請參閱
StringCchLength