[此功能可透過 Windows XP 和 Windows Server 2003 使用。 它可能會在後續版本的 Windows 中被更改或無法使用。
將字串從 ANSI 字碼頁轉換為 Unicode 字碼頁。
語法
int SHAnsiToUnicode(
[in] PCSTR pszSrc,
[out] PWSTR pwszDst,
int cwchBuf
);
參數
[in] pszSrc
類型: PCSTR
要轉換成 Unicode 之 Null 結尾 ANSI 字串的指標。
[out] pwszDst
類型: PWSTR
緩衝區的指標,當此函式成功傳回時,會在 ANSI 字元轉換成 Unicode (WCHAR) 之後,接收 pszSrc 所指定的字串。 緩衝區必須足夠大,才能包含 cwchBuf 參數所指定的 Unicode 字元數目,包括終止空值字元。
cwchBuf
類型: int
pwszDst 所指向的緩衝區可以包含的 Unicode 字元數目。 此參數必須大於零。
返回值
類型: int
傳回寫入 pwszDst 的 Unicode 字元數目,包括終止的 Null 字元。 如果不成功,則傳回 0。
備註
安全警告: 不正確地使用此功能可能會危及應用程式的安全性。 例如,如果 pwszDst 緩衝區不夠大,無法包含 cwchBuf 所指定的字元數目,則可能會發生緩衝區溢出。 如果發生存取違規,緩衝區滿溢可能會導致對應用程式進行阻斷服務攻擊。 在最壞的情況下,緩衝區滿溢可能會讓攻擊者將可執行程式代碼插入您的進程,特別是當 pwszDst 是堆疊型緩衝區時。 複製整個字串時,請注意 sizeof 會傳回位元組數,這不是用於 cwchBuf 參數的正確值。 請改用 sizeof(pwszDst)/sizeof(WCHAR)。 請注意,此技術假設 pwszDst 是陣列,而不是指標。
如果 pwszDst 緩衝區不夠大,無法包含整個轉換的輸出字串,則會截斷字串以符合緩衝區。 無法偵測傳回字串是否已截斷。 字串一律以 Null 結尾,即使它已被截斷也一樣。 這可確保複製到 pwszDst 的字元不超過 cwchBuf。 不會嘗試避免截斷 Unicode 代理配對中間的字串。
如果 pszSrc 和 pwszDst 緩衝區重疊,則函式的行為會未定義。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows 2000 專業版、Windows XP [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows 2000 Server、Windows Server 2003 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| Header | 什爾瓦皮.h |
| Library | mincore_downlevel.lib |
| DLL | Shlwapi.dll(5.0 版或更新版本) |
另請參閱
字串Cch長度