如下是一个支持长路径的例子,首先在D盘创建了一个名字长为244的文件夹,然后在这个文件夹下面又创建了一个名字长为244的文件,如果不加\\?\作为前缀,那么文件会创建失败,错误码为3,ERROR_PATH_NOT_FOUND,The system cannot find the path specified。如果加上\\?\作为前缀,就能创建成功了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
int _tmain(int argc, _TCHAR* argv[]) { LPCWSTR folder = L"d:\\111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"; bool ret = CreateDirectory(folder, NULL); if (!ret) { printf("Could not create folder %ws, error %d\n", folder, GetLastError()); }
LPCWSTR name = L"\\\\?\\d:\\111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\\111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.txt"; //LPCWSTR name = L"d:\\111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111\\111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.txt";