Поделиться через


Функция PathCchAppendEx (pathcch.h)

Добавляет один путь к концу другого.

Эта функция отличается от PathCchAppend тем, что позволяет создавать более длинный конечный путь.

Эта функция отличается от PathAppend тем, что принимает пути с префиксами "\", "\?" и "\?\UNC".

Примечание Эту функцию или PathCchAppend следует использовать вместо PathAppend , чтобы предотвратить возможность переполнения буфера.

Синтаксис

WINPATHCCHAPI HRESULT PathCchAppendEx(
  [in, out]      PWSTR  pszPath,
  [in]           size_t cchPath,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

Параметры

[in, out] pszPath

Указатель на буфер, который в записи содержит исходный путь. Если эта функция возвращается успешно, буфер содержит исходный путь плюс добавленный путь.

[in] cchPath

Размер буфера, на который указывает pszPath, в символах.

[in, optional] pszMore

Указатель на путь для добавления в конец пути, на который указывает pszPath. UNC-пути и пути, начинающиеся с последовательности \?\, принимаются и распознаются как полные пути. Эти пути заменяют строку, на которую указывает pszPath , а не добавляются к ней.

[in] dwFlags

Один или несколько из следующих флагов:

Значение Значение
PATHCCH_NONE
0x0000000
Не разрешайте создание путей \\?\ (т. е. длинных путей) длиннее MAX_PATH.
PATHCCH_ALLOW_LONG_PATHS
0x00000001
Разрешите построение путей \\?\ длиннее MAX_PATH.
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
Заставляет API обрабатывать вызывающий объект как включенный длинный путь независимо от состояния с включенным длинным именем процесса. Этот параметр можно использовать только при указании PATHCCH_ALLOW_LONG_PATHS и не может использоваться с PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS.

Примечание Это значение доступно начиная с Windows 10 версии 1703.

PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
Заставляет API обрабатывать вызывающий объект как длинный путь отключен, независимо от состояния, включенного длинным именем процесса. Этот параметр можно использовать только при указании PATHCCH_ALLOW_LONG_PATHS и не может использоваться с PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS.

Примечание Это значение доступно начиная с Windows 10 версии 1703.

PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
Отключает нормализацию сегментов пути, включая удаление конечных точек и пробелов. Это обеспечивает доступ к путям, которые будут блокироваться нормализацией путей win32.

Примечание Это значение доступно начиная с Windows 10 версии 1703.

PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
Преобразует входной путь в форму пути устройства DOS расширенной длины (с префиксом \\?\), если он еще не в этой форме. Это обеспечивает доступ к путям, которые в противном случае недоступны из-за правил нормализации Win32 (которые могут разделять конечные точки и пробелы) и ограничений длины пути. Этот параметр подразумевает то же поведение PATHCCH_DO_NOT_NORMALIZE_SEGMENTS.

Примечание Это значение доступно начиная с Windows 10 версии 1703.

Возвращаемое значение

Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код HRESULT , включая следующие.

Код возврата Описание
E_INVALIDARG
Либо pszPath , либо pszMore имеет значение NULL, cchPath равно 0, либо cchPath больше PATHCCH_MAX_CCH.
PATHCCH_E_FILENAME_TOO_LONG
Итоговая строка превысит PATHCCH_MAX_CCH.
E_OUTOFMEMORY
Функции не удалось выделить буфер необходимого размера.

Комментарии

Эта функция вставляет обратную косую черту между двумя строками, если ее еще нет.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header pathcch.h
Библиотека Pathcch.lib

См. также раздел

PathCchAppend