我在msdn(Obtaining a file name from a file handle)中使用了这段代码来获取我从findfirstchangenotification获得的文件句柄的文件名。
但现在问题是结果字符串的编码在某种程度上是错误的。我只看到一个字符而不是所有字符(通常是问号)。
所以我的代码调用GetMappedFileName
,并获得问号。
if (GetMappedFileName (GetCurrentProcess(),
pMem,
pszFilename,
MAX_PATH))
为什么?
答案 0 :(得分:2)
您正在调用GetMappedFileName
的“A”形式,该形式只能在您当前的ACP中提供字符。您的文件名中包含的字符不在当前的ACP中,因此会转到问号。
如果文件名包含当前ACP中没有表示的Unicode字符,您将收到问号。你应该调用API的'W'形式来获取文件名的Unicode形式,然后决定你想用它做什么。