如何使用 SHCreateStreamOnFileEx 创建具有长 UNC 路径的文件

Posted

技术标签:

【中文标题】如何使用 SHCreateStreamOnFileEx 创建具有长 UNC 路径的文件【英文标题】:how to use SHCreateStreamOnFileEx to create a file with a long UNC path 【发布时间】:2013-11-28 09:24:26 【问题描述】:

当我使用 SHCreateStreamOnFileEx 创建具有长 UNC 路径(WCHAR,如 \?\UNC\localhost\long.......long.....path\abc.txt)的流时,我得到了错误“0x80070003 系统找不到指定的路径。”。

来自http://msdn.microsoft.com/en-us/library/windows/desktop/bb759866(v=vs.85).aspx,

备注 SHCreateStreamOnFileEx 函数扩展了 STGM 标志的语义并产生与调用 CreateFile 函数相同的效果。

来自http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx, *lpFileName [输入] 在此函数的 ANSI 版本中,名称仅限于 MAX_PATH 字符。 要将此限制扩展到 32,767 个宽字符,请调用函数的 Unicode 版本并将 "\?\" 附加到路径中。有关详细信息,请参阅命名文件、路径和命名空间。*

有人知道如何让 SHCreateStreamOnFileEx 支持长 UNC 路径吗?

谢谢!

【问题讨论】:

【参考方案1】:

CreateFile 函数要求您将\\server\share\path 转换为\\?\UNC\server\share\path,即开头的两个反斜杠。如果这不起作用,那么SHCreateStreamOnFileEx 不支持长路径。

【讨论】:

以上是关于如何使用 SHCreateStreamOnFileEx 创建具有长 UNC 路径的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?