0

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

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

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

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

为什么?

4

1 回答 1

2

您正在调用 的“A”形式GetMappedFileName,它只能传递您当前 ACP 中的字符。您的文件名包含当前 ACP 中没有的字符,因此它们会变成问号。

如果文件名包含在当前 ACP 中没有表示的 Unicode 字符,您将得到问号。您应该调用 API 的“W”形式来获取文件名的 Unicode 形式,然后决定要如何处理它。

于 2012-11-17T13:21:57.200 回答