How do I: use CreateDirectoryEx to create a Directory 300+ characters? - Using Unicode Build

R

Russell Mangel

Hi, I am trying to create a directory on my disk wihich is 300+ characters
long.
My program does not work, can you make it go? I am using VS2003 C++.

Russell Mangel, Las Vegas, NV

// I have specified Unicode Character set in project settings
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
// Assumes that you have an existing directory: C:\\A
LPCTSTR lpTemplateDirectory= _T("C:\\A");

// This is a 300+ Character Directory, ANSI is limited to 248 chars
// I think I have the \\?\ in the right place?
LPCTSTR lpNewDirectory =
_T("\\?\C:\\A\\0000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000-000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000-00000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000");

if(CreateDirectoryEx(lpTemplateDirectory, lpNewDirectory, NULL))
{
printf("Successfully created: %s", lpNewDirectory);
}
else
{
printf("Error: %d", GetLastError());
}
return 0;
}
 
R

Ronald Laeremans [MSFT]

Hi Russel,

I think you are misunderstanding 1 critical piece: each component of the
path can still only be 255 characters.

This is from the MDSN doc topic:
"The Unicode versions of several functions permit a maximum path length of
32,767 characters, composed of components up to 255 characters in length."

In addition, you are forgetting to escape the first double-\.

You would need:

\\\\?\\C:\\A\\.

Ronald Laeremans
Visual C++ team
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top