从 C 代码调用 SHGetKnownFolderPath

标签 c winapi windows-7 windows-vista known-folders

我正在尝试使用 Visual Studio 2008 从 C 调用 Vista 函数 SHGetKnownFolderPath()。该代码可以像 C++ 一样正常工作,但拒绝使用以下输出编译为 C 代码:

xyz\indexwiki.cpp(316) : error C2440: 'function' : cannot convert from 'const GUID' to 'const KNOWNFOLDERID *const ' xyz\indexwiki.cpp(316) : warning C4024: 'SHGetKnownFolderPath' : different types for formal and actual parameter 1

代码相当多:

PWSTR path;

HRESULT hr = SHGetKnownFolderPath(
  FOLDERID_Profile,
  0,
  NULL,
  &path
);

如果可以的话,我更愿意将其保留为 C 并将项目保留为单个源文件。这是较新的 Windows API 的已知问题吗?我通过谷歌找不到太多东西。我错过了什么吗?或者是否有一个涉及转换或预处理器定义的简单解决方法?

最佳答案

下面这个怎么样?

HRESULT hr = SHGetKnownFolderPath(&FOLDERID_Profile, 0, NULL, &path);

关于从 C 代码调用 SHGetKnownFolderPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521657/

相关文章:

c++ - 如何比较 strstr(LPCWSTR, CHAR*);

c - 如何让 Windows Pipe 在进程完成时添加 EOF

ruby - 在带有 Rails 3、Ruby 1.9.2 的 Windows 7 上运行自动测试时出错

visual-studio - 在 Windows 7 上安装 ARTOOLKIT

c - 基本 C 指针

c - fork() 如何以及为什么会失败?

c++ - c/c++中指针的内存开销

c++ - 如何优化绘图例程以在 Windows CE 中实现最大刷新率?

c - winapi创建快捷方式失败

python - 基于 Python 3.9 的软件无法在 Windows 7 上运行