我知道 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
这样做的目的是什么?