“文件句柄中的文件名”编码错误

时间:2012-11-17 13:03:29

标签: winapi unicode

我在msdn(Obtaining a file name from a file handle)中使用了这段代码来获取我从findfirstchangenotification获得的文件句柄的文件名。

但现在问题是结果字符串的编码在某种程度上是错误的。我只看到一个字符而不是所有字符(通常是问号)。

所以我的代码调用GetMappedFileName,并获得问号。

 if (GetMappedFileName (GetCurrentProcess(), 
                         pMem, 
                         pszFilename,
                         MAX_PATH)) 

为什么?

1 个答案:

答案 0 :(得分:2)

您正在调用GetMappedFileName的“A”形式,该形式只能在您当前的ACP中提供字符。您的文件名中包含的字符不在当前的ACP中,因此会转到问号。

如果文件名包含当前ACP中没有表示的Unicode字符,您将收到问号。你应该调用API的'W'形式来获取文件名的Unicode形式,然后决定你想用它做什么。