我知道 shell32.dll 导出两种类型的函数——ANSI 和 UNICODE。(为简单起见,我只讨论接受 CHAR*/WCHAR* 参数的函数。)
例如,ShellMessageBoxA是 ANSI 版本,ShellMessageBoxW而是 Unicode 版本。ShellMessageBox是头文件中定义的宏:
#ifdef UNICODE
#define ShellMessageBox ShellMessageBoxW
#else
#define ShellMessageBox ShellMessageBoxA
#endif // !UNICODE
所以ShellMessageBox不作为从 Shell32.dll 导出的函数存在。
但是现在我发现SHGetPathFromIDList导出了三遍:
- 序数 312 -
SHGetPathFromIDList - 序数 313 -
SHGetPathFromIDListA - 序数 314 -
SHGetPathFromIDListW
这样做的目的是什么?