首页 > 解决方案 > 是否有 GetFullPathName 的线程安全版本?

问题描述

MSDN 文档建议不要GetFullPathName()在多线程应用程序和共享库中使用 - 不幸的是,我正在构建一个多线程共享库。

具体来说,我正在寻找转换双点组件,这样给定当前目录"C:\FolderA\FolderB\FolderC",路径"..\..\FolderX\FolderY"将 yield "C:\FolderX\FolderY"

虽然我可以从头开始编写一个,但我希望找到一个更快的解决方案,并且,一个已经尝试和测试过的解决方案。

编辑

查看我的规范后,我可以要求调用者指定一个基本文件夹,而不是依赖于当前目录。但是,我仍然需要转换双点,这是我试图避免的。

请注意,项目要求不包括第三方库,例如 Boost 和 QT,除非该算法可以完全复制到最终解决方案中。

标签: c++winapi

解决方案


导致它线程不安全的问题GetFullPathName是它依赖于当前目录。

因此,您需要自己使用PathCombine(或改进版本,例如PathCchCombineEx)并传递一些东西而不是当前目录。


推荐阅读