PathCchCombineEx 함수(pathcch.h)

두 개의 경로 조각을 단일 경로로 결합합니다. 또한 이 함수는 상대 경로 요소를 정식화하여 "." 및 ".." 요소를 제거하여 최종 경로를 간소화합니다.

이 함수는 더 긴 최종 경로를 생성할 수 있다는 점에서 PathCchCombine 과 다릅니다.

이 함수는 호출자가 스택에 저장된 반환된 문자열의 크기를 선언해야 한다는 점에서 PathAllocCombine 과 다릅니다.

이 함수는 "\", "\?" 및 "\?\UNC" 접두사를 가진 경로를 허용한다는 점에서 PathCombine 과 다릅니다.

참고 버퍼 오버런 가능성을 방지하려면 PathCombine 대신 이 함수 PathCchCombine 또는 PathAllocCombine을 사용해야 합니다.

구문

WINPATHCCHAPI HRESULT PathCchCombineEx(
  [out]          PWSTR  pszPathOut,
  [in]           size_t cchPathOut,
  [in, optional] PCWSTR pszPathIn,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

매개 변수

[out] pszPathOut

이 함수가 성공적으로 반환될 때 결합된 경로 문자열을 수신하는 버퍼에 대한 포인터입니다. 이 매개 변수는 pszPathIn 또는 pszMore 와 동일한 버퍼를 가리킬 수 있습니다.

[in] cchPathOut

pszPathOut이 가리키는 버퍼의 크기(문자)입니다.

[in, optional] pszPathIn

첫 번째 경로 문자열에 대한 포인터입니다. 이 값은 NULL일 수 있습니다.

[in, optional] pszMore

두 번째 경로 문자열에 대한 포인터입니다. 이 경로가 단일 백슬래시로 시작하는 경우 pszPathIn이 가리키는 경로의 루트와만 결합됩니다. 이 경로가 정규화된 경우 다른 경로와 결합되지 않고 출력 버퍼에 직접 복사됩니다. 이 값은 NULL일 수 있습니다.

[in] dwFlags

다음 플래그 중 하나 이상:

의미
PATHCCH_NONE
0x0000000
MAX_PATH 보다 긴 \\?\ 경로(예: 긴 경로)의 생성을 허용하지 않습니다.
PATHCCH_ALLOW_LONG_PATHS
0x00000001
MAX_PATH 보다 긴 \\?\ 경로의 생성을 허용합니다. cchPathOutMAX_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부터 사용할 수 있습니다.

반환 값

이 함수는 다음을 포함하여 HRESULT 코드를 반환합니다.

반환 코드 Description
S_OK
함수가 성공했습니다. 여기에는 다음 문자가 없는 마침표와 같은 빈 확장의 경우도 포함됩니다. 이 경우 원래 문자열은 비정형으로 반환됩니다.
E_INVALIDARG
이 값은 pszPathOut 매개 변수가 NULL로 설정되거나 cchPathOut 값이 0으로 설정되거나 PATHCCH_MAX_CCH 보다 큰 값과 같은 여러 가지로 인해 발생할 수 있습니다.
E_OUTOFMEMORY
함수가 작업을 수행하기에 충분한 메모리를 할당할 수 없습니다.
PATHCCH_E_FILENAME_TOO_LONG
원래 경로 중 하나 또는 둘 다의 크기가 PATHCCH_MAX_CCH 초과했습니다.

설명

pszPathInpszMore모두 NULL이거나 빈 문자열을 가리키는 경우 단일 백슬래시가 pszPathOut이 가리키는 버퍼에 복사됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 pathcch.h
라이브러리 Pathcch.lib

추가 정보

PathCchCanonicalize

PathCchCanonicalizeEx

PathCchCombine