Функция GetLongPathName преобразует указанный путь в его длинную форму. Если длинный путь не найден, эта функция просто возвращает указанное имя.
Синтаксис
DWORD GetLongPathName( LPCTSTR lpszShortPath, // имя файла LPTSTR lpszLongPath, // буфер пути DWORD cchBuffer // размер буфера пути ); |
Параметры
lpszShortPath
[in] Указатель на преобразуемый путь с нулем завершения строки в конце.Windows 2000/XP: В версии ANSI этой функции, число символов имени ограничивается значением MAX_PATH. Чтобы выйти за пределы этого ограничения до длины равной 32767 символам, вызовите Unicode версию функции и присоедините спереди пути "\\?\". Подробную информацию см. в статье Именование файлов.
Windows 98/Me: Эта строка символов не должна выходить за пределы, очерченные значением MAX_PATH.
lpszLongPath
[out] Указатель на буфер, который принимает длинный путь. Вы можете использовать тот же самый буфер, который Вы использовали для параметра lpszShortPath.cchBuffer
[in] Размер буфера, в TCHARs (символах).Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - длина символьной строки, скопированной в параметр lpszLongPath , в TCHARs. Эта длина не включает символ завершения строки (нуль-терминатор).
Если буфер lpszLongPath является слишком маленьким, чтобы содержать путь, возвращаемое значение - размер буфера, в TCHARs, необходимый, чтобы вместить путь. Поэтому, если возвращаемое значение больше, чем cchBuffer, вызовите функцию снова с буфером, который является достаточно большим, чтобы вместить путь.
Если функция завершается ошибкой по любой другой причине, величина возвращаемого значения - нуль. Чтобы получить дополнительные данные об ошибке, вызовите GetLastError.
Замечания
Во многих файловых системах, короткое имя файла содержит символ тильды (~). Однако, не все файловые системы следуют этому соглашению. Поэтому, не обольщайтесь тем, что Вы можете пропустить вызов функции GetLongPathName, если путь не содержит символ тильды.
Windows NT и Windows 95: Включите дополнительный заголовочный файл по имени NewAPIs.h, чтобы сделать функцию GetLongPathName доступной для этих операционных систем. Эта функция самостоятельно не выполняется, а при помощи оболочки, которая использует другие родные функции в этих системах. Детали использования директив предпроцессора, которые делают эту функцию доступной, см. в заголовочном файле. Если у вас нет этого заголовочного файла, он может быть получен, путем загрузки самого последнего SDK из Сайта обновления SDK (SDK Update Site).Смотри также
Статья Именование файлов, Функции, используемые в управлении файлами, GetFullPathName, GetShortPathName
|
Размещение и совместимость GetLongPathName |
||
| К |
Windows XP |
Да |
| л |
Windows 2000 Professional |
Да |
| и |
Windows NT |
Нет |
| е |
Windows Me |
Да |
| н |
Windows 98 |
Да |
| т |
Windows 95 |
Нет |
| С |
Windows Server 2003 |
Да |
| е | Windows 2000 Server | Да |
| р | Windows NT Server | Нет |
| в | ||
| е | ||
| р | ||
|
Используемая библиотека |
Kernel32.lib |
|
| Используемая DLL | - | |
| Заголовочный файл | ||
|
- объявлено в |
Winbase.h |
|
| - включено в |
Windows.h |
|
| Unicode |
Реализуется как версии Unicode и ANSI для Windows 2000/XP. Обратите внимание на то, что поддержка в Windows Me/98/95 требует программы Microsoft Layer for Unicode. |
|
| Замечания по платформе |
Не имеется |
|