我在調用GetUserNameEx()時遇到了有關奇怪返回大小的問題。也許有人已經遇到了這個問題。GetUserNameEx()返回的緩衝區的大小
我調用GetUserNameEx()兩次:第一次獲取所需的緩衝區大小,第二次實際填充緩衝區。
在documentation你可以看到這篇關於大小參數:
-
如果lpNameBuffer太小,函數失敗並GetLastError返回ERROR_MORE_DATA。該參數以Unicode字符(不論是否使用Unicode)(包括終止空字符)接收所需的緩衝區大小。
我保存此值(
required_size
)以檢查成功返回的值。 -
在輸入時,該變量指定TCHAR中的lpNameBuffer緩衝區的大小。如果函數成功,變量接收復制到緩衝區的TCHAR數量,不包括終止空字符。
這一個是
returned_size
。
奇怪的是,如果我在項目屬性中設置字符編碼未設置,則required_size
是22和returned_size
是11
而當我設Charachter編碼使用Unicode字符集,然後required_size
是11,returned_size
也是11。
也許我沒有得到什麼,但我預計required_size
不能改變。有沒有人看到過這個?
謝謝。
UPD:這裏是code example。
發佈您的代碼。會更容易看到問題。 – Dennis 2012-02-13 12:34:56
通過指向代碼的鏈接更新了帖子。 – kishkin 2012-02-13 14:32:59