Функция PathCchCanonicalizeEx (pathcch.h)
Упрощает путь, удаляя такие элементы навигации, как "." и ".", чтобы создать прямой, правильно сформированный путь.
Эта функция отличается от PathCchCanonicalize тем, что она позволяет создать более длинный конечный путь.
Эта функция отличается от PathAllocCanonicalize тем, что вызывающий объект должен объявить размер возвращаемой строки, которая хранится в стеке.
Эта функция отличается от PathCanonicalize тем, что она принимает пути с префиксами "\", "\?" и "\?\UNC".
Синтаксис
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
Параметры
[out] pszPathOut
Указатель на буфер, который при успешном возврате этой функции получает отредактированную строку пути.
[in] cchPathOut
Размер буфера, на который указывает pszPathOut, в символах.
[in] pszPathIn
Указатель на исходную строку пути. Если это значение равно NULL, указывает на пустую строку или приводит к пустой строке после удаления элементов "." и "..", одна обратная косая черта копируется в буфер, на который указывает pszPathOut.
[in] dwFlags
Один или несколько из следующих флагов:
Возвращаемое значение
Если эта функция завершается успешно, она возвращает S_OK. В противном случае он возвращает код HRESULT , включая, помимо прочего, следующее.
Код возврата | Описание |
---|---|
|
Значение cchPathOut больше PATHCCH_MAX_CCH. |
|
Сегмент пути содержит более PATHCCH_MAX_CCH символов или, если флаг PATHCCH_ALLOW_LONG_PATHS не задан, превышает стандартную длину сегмента пути в 256 символов. |
|
Функции не удалось выделить буфер необходимого размера. |
Комментарии
Эта функция отвечает на строки "." и "..", внедренные в путь. Строка ".." указывает на удаление непосредственно предшествующего сегмента пути. Строка "." указывает, что нужно пропустить следующий сегмент пути. Обратите внимание, что корневой сегмент пути не может быть удален. Если строк ".." больше, чем сегментов пути, функция возвращает S_OK а буфер, на который указывает pszPathOut , содержит одну обратную косую черту "\".
Все конечные точки удаляются из пути, за исключением случаев, когда предшествует символ "" дикого карта. В этом случае одна точка сохраняется после символа "", но все остальные конечные точки удаляются.
Если полученный путь является корневым диском ("x:"), добавляется обратная косая черта ("x:\").
Эта функция не преобразует косую черту (/) в обратную косую черту (\). При ненадежных входных данных эта функция сама по себе не может использоваться для преобразования путей в форму, которую можно сравнить с другими путями для вложенного пути или идентификатора. Вызывающие абоненты, которым требуется эта возможность, должны преобразовать косую черту вперед в обратную перед использованием этой функции.
В следующих примерах показан эффект этих строк.
Исходная строка | Канонизированная строка |
---|---|
C:\name_1\.\name_2\.. \name_3 | C:\name_1\name_3 |
C:\name_1\.. \name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\.. \name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\.. \name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*. |
C:\.. | C:\ |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | pathcch.h |
Библиотека | Pathcch.lib |