Прежде всего, позвольте мне задать риторический вопрос - Microsoft, зачем нам добавлять пути с \\?\
, чтобы они имели длину 32 767 символов? Почему бы просто не использовать их as-is и расширить размер внутренних буферов на API? Извините, я просто разочаровываю свое разочарование...
Хорошо, теперь мой фактический вопрос, скажем, если у меня есть путь, как его преобразовать в формат, принимающий длину 32 767 символов? Обратите внимание, что я ничего не знаю об этом пути - это может быть относительный путь, абсолютный локальный путь, сетевой ресурс и т.д. Другими словами, это может быть любой из тех множеств форматов пути, которые Microsoft изобрела.
Поначалу кажется простым предложением добавить \\?\
в начале, правильно? Что ж, если этот путь уже преобразован в расширенный формат? Я пробовал прочитать это, и из размера этой страницы и количества комментариев внизу вы можете видеть, что все не так просто, как кажется.