共用方式為


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 代理字組中間的字串。

如果 pwzSrcpwzDst 緩衝區重疊,則未定義函式的行為。

注意 請勿假設函式尚未變更輸出緩衝區中緊接字串終止 Null 字元的任何字元。 在字串終止 Null 字元之後輸出緩衝區的內容未定義,最多包含緩衝區的最後一個字元。
 
SHTCharToUnicode 定義為與 SHUnicodeToUnicode 相同。

SHUnicodeToTChar 定義為與 SHUnicodeToUnicode 相同。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版、Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server、Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 shlwapi.h
Dll Shlwapi.dll (5.0 版或更新版本)

另請參閱

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength