PathCchCanonicalize 함수(pathcch.h)
경로 문자열을 정식 형식으로 변환합니다.
이 함수는 길이가 MAX_PATH 최종 경로로 제한된다는 점에서 PathCchCanonicalizeEx 와 다릅니다.
이 함수는 호출자가 스택에 저장된 반환된 문자열의 크기를 선언해야 한다는 점에서 PathAllocCanonicalize 와 다릅니다.
이 함수는 "\", "\?" 및 "\?\UNC" 접두사를 사용하여 경로를 허용한다는 점에서 PathCanonicalize 와 다릅니다.
구문
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:\").
이 함수는 슬래시(/)를 슬래시(\)로 변환하지 않습니다. 신뢰할 수 없는 입력을 사용하면 이 함수 자체를 사용하여 경로를 하위 경로 또는 ID의 다른 경로와 비교할 수 있는 형식으로 변환할 수 없습니다. 이 기능이 필요한 호출자는 이 함수를 사용하기 전에 슬래시로 앞으로 변환해야 합니다.
다음 예제에서는 이러한 문자열의 효과를 보여 줍니다.
원본 문자열 | 정식화된 문자열 |
---|---|
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 |
헤더 | pathcch.h |
라이브러리 | Pathcch.lib |