windows - CreateDirectoyW (...) API mislykkes med fejlkode=123 (

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne oprette katalog med relativt langt navn (ca.> 260 tegn), så jeg bruger CreateDirectoryW (...) API som MSDN dokumentation.
men det fejler for lang navnekatalog (> 260) .. kan nogen fortælle mig løsningen ???


Jeg bruger Visual Studio 2008 på Microsoft Windows 2003 Server


f.eks.


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


Den egentlige sti er:


CString s = L"\?C:data	empabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopq1234567890";

Bedste reference


Jeg tror, ​​at grænsen for en enkelt sti-komponent stadig er 255 tegn. Alt, hvad \? faciliteten giver dig mulighed for at lave, er at komponere en sti, der er længere end 260 tegn i sin helhed.


Fra navngivning af filer, stier og navneområder: [4]



  Windows API har mange funktioner, der også har Unicode-versioner for at tillade en forlænget vej til en maksimal total sti længde på 32.767 tegn. Denne type sti består af komponenter adskilt af tilbageslag, hver op til den værdi, der returneres i parameteren lpMaximumComponentLength i GetVolumeInformation-funktionen (denne værdi er normalt 255 tegn). [5]






Også til reference er fejl 123 defineret i winerror.h som ERROR\_INVALID\_NAME