Windows CreateDirectoyW(…)API失败,错误代码为123(

Windows CreateDirectoyW(…)API失败,错误代码为123(,windows,sdk,Windows,Sdk,我想用相对较长的名称(大约大于260个字符)创建目录,因此我根据MSDN文档使用CreateDirectoryW(…)API。 但是对于长名称目录(>260)它失败了…有人能告诉我解决方案吗 我正在Microsoft Windows 2003服务器上使用Visual Studio 2008 e、 g 我相信单个路径组件的限制仍然是255个字符。\\?\功能允许您编写一个完整长度超过260个字符的路径 发件人: Windows API有许多函数,这些函数也有Unicode版本,以允许最大总路径长度

我想用相对较长的名称(大约大于260个字符)创建目录,因此我根据MSDN文档使用CreateDirectoryW(…)API。 但是对于长名称目录(>260)它失败了…有人能告诉我解决方案吗

我正在Microsoft Windows 2003服务器上使用Visual Studio 2008

e、 g


我相信单个路径组件的限制仍然是255个字符。
\\?\
功能允许您编写一个完整长度超过260个字符的路径

发件人:

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



此外,作为参考,winerror.h将错误123定义为错误\u无效\u名称

我认为单个路径组件的限制仍然是255个字符。
\\?\
工具允许您编写一个完整长度超过260个字符的路径

发件人:

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



此外,为了便于参考,winerror.h将错误123定义为error\u INVALID\u NAME

您给出的示例路径已正确转义,但实际路径未正确转义。您给出的示例路径已正确转义,但实际路径未正确转义。
CString s = L"\\\\?\\C:\\dir1\\dir2\\<long name > 260 char>";
bool b = CreateDirectoryW(s, NULL);
CString s = L"\\?\C:\data\temp\abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopq1234567890";