RTSt
文件 \src\VBox\Runtime\r3\win\fileio-win.cpp
PRTUTF16 pwszFilename;
rc = RTStrToUtf16(pszFilename, &pwszFilename);
RTStrToUtf16 方法实际是 RTStrToUtf16Tag 参数pszTag由宏定义加上
文件:\src\VBox\Runtime\common\string\utf-8.cpp
RTStrToUtf16Tag(const char *pszString, PRTUTF16 *ppwszString, const char *pszTag)
A) size_t cwc;
int rc = rtUtf8CalcUtf16Length(pszString, RTSTR_MAX, &cwc); //cwc 是Utf8字符串长度
B) 分配utf16字符串空间 (这里的pszTag == D:\xxx\src\VBox\Runtime\r3\win\fileio-win.cpp)
PRTUTF16 pwsz = (PRTUTF16)RTMemAllocTag((cwc + 1) * sizeof(RTUTF16), pszTag);
C) 编码成utf16
/*
* Encode the UTF-16 string.
*/
rc = rtUtf8RecodeAsUtf16(pszString, RTSTR_MAX, pwsz, cwc);