CreateDirectoyW(...)API失败,错误代码= 123(

时间:2011-04-08 06:13:29

标签: windows sdk

我想创建名称相对较长的目录(大约> 260个字符。),因此我根据MSDN文档使用CreateDirectoryW(...)API。 但它没有长名称目录(> 260)..任何人都告诉我解决方案???

我在Microsoft Windows 2003 Server上使用Visual Studio 2008

e.g。

CString s = L"\\\\?\\C:\\dir1\\dir2\\<long name > 260 char>";
bool b = CreateDirectoryW(s, NULL);

实际路径是:

CString s = L"\\?\C:\data\temp\abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopq1234567890";

1 个答案:

答案 0 :(得分:1)

我认为单个路径组件的限制仍然是255个字符。 \\?\工具允许您执行的所有操作都是构成一个长度超过260个字符的路径。

来自Naming Files, Paths, and Namespaces

  

Windows API有许多函数也具有Unicode版本,允许扩展长度路径,最大总路径长度为32,767个字符。这种类型的路径由反斜杠分隔的组件组成,每个组件都是GetVolumeInformation函数的 lpMaximumComponentLength 参数中返回的值(此值通常为255个字符)。


另外,作为参考,错误123在winerror.h中定义为ERROR_INVALID_NAME