Функция PathCchCanonicalize (pathcch.h)
Преобразует строку пути в каноническую форму.
Эта функция отличается от PathCchCanonicalizeEx тем, что вы ограничены конечным путем длины MAX_PATH.
Эта функция отличается от PathAllocCanonicalize тем, что вызывающий объект должен объявить размер возвращаемой строки, которая хранится в стеке.
Эта функция отличается от PathCanonicalize тем, что она принимает пути с префиксами "\", "\?" и "\?\UNC".
Синтаксис
WINPATHCCHAPI HRESULT PathCchCanonicalize(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn
);
Параметры
[out] pszPathOut
Указатель на буфер, который при успешном возврате этой функции получает строку канонического пути.
[in] cchPathOut
Размер буфера, на который указывает pszPathOut, в символах.
[in] pszPathIn
Указатель на исходную строку пути. Если это значение указывает на пустую строку или приводит к пустой строке после удаления элементов "." и "..", одна обратная косая черта копируется в буфер, на который указывает pszPathOut.
Возвращаемое значение
Если эта функция завершается успешно, она возвращает S_OK. В противном случае он возвращает код HRESULT , включая следующий код.
Код возврата | Описание |
---|---|
|
Значение cchPathOut больше PATHCCH_MAX_CCH. |
|
Сегмент пути превышает стандартную длину сегмента пути в 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 |