Функция 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. |
|
Замечания по платформе |
Не имеется |