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


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

Объединяет два фрагмента пути в один путь. Эта функция также канонизирует все относительные элементы пути, заменяя элементы пути, такие как "." и "..".

Эта функция отличается от PathCchCombine и PathCchCombineEx тем, что возвращает результат в куче. Это означает, что вызывающий объект не должен объявлять размер возвращаемой строки и сокращает использование стека.

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

Примечание Эту функцию PathCchCombine или PathCchCombineEx следует использовать вместо PathCombine.
<

Синтаксис

WINPATHCCHAPI HRESULT PathAllocCombine(
  [in]  PCWSTR pszPathIn,
  [in]  PCWSTR pszMore,
  [in]  ULONG  dwFlags,
  [out] PWSTR  *ppszPathOut
);

Параметры

[in] pszPathIn

Указатель на первую строку пути.

[in] pszMore

Указатель на вторую строку пути. Если этот путь начинается с одной обратной косой черты, он объединяется только с корнем пути, на который указывает pszPathIn. Если этот путь является полным, он копируется непосредственно в выходной буфер без объединения с другим путем.

[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.

PATHCCH_ENSURE_TRAILING_SLASH
0x00000020
При объединении или нормализации пути убедитесь, что имеется обратная косая черта в конце.

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

[out] ppszPathOut

Адрес указателя на буфер, который при успешном возвращении этой функции получает строку объединенного пути. Вызывающий объект отвечает за освобождение этого ресурса, когда он больше не нужен, путем вызова функции LocalFree . Это значение не может иметь значение NULL.

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

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

Комментарии

Хотя pszPathIn или pszMore могут иметь значение NULL, они не могут иметь значение NULL.

Эта функция поддерживает следующие формы альтернативных путей:

  • \\?\
  • \\?\\UNC\
  • \\?\Volume{guid}\

Требования

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

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

PathCchCombine

PathCchCombineEx