다음을 통해 공유


PathRelativePathToW 함수(shlwapi.h)

한 파일 또는 폴더에서 다른 파일로의 상대 경로를 만듭니다.

구문

BOOL PathRelativePathToW(
  [out] LPWSTR  pszPath,
  [in]  LPCWSTR pszFrom,
  [in]  DWORD   dwAttrFrom,
  [in]  LPCWSTR pszTo,
  [in]  DWORD   dwAttrTo
);

매개 변수

[out] pszPath

형식: LPTSTR

상대 경로를 수신하는 문자열에 대한 포인터입니다. 이 버퍼의 크기는 최소 MAX_PATH 문자여야 합니다.

[in] pszFrom

형식: LPCTSTR

상대 경로의 시작을 정의하는 경로가 포함된 최대 길이 MAX_PATH null로 끝나는 문자열에 대한 포인터입니다.

[in] dwAttrFrom

형식:DWORD

pszFrom의 파일 특성입니다. 이 값에 FILE_ATTRIBUTE_DIRECTORY 포함된 경우 pszFrom 은 디렉터리로 간주됩니다. 그렇지 않으면 pszFrom 은 파일로 간주됩니다.

[in] pszTo

형식: LPCTSTR

상대 경로의 엔드포인트를 정의하는 경로를 포함하는 최대 길이 MAX_PATH null로 끝나는 문자열에 대한 포인터입니다.

[in] dwAttrTo

형식:DWORD

pszTo의 파일 특성입니다. 이 값에 FILE_ATTRIBUTE_DIRECTORY 포함된 경우 pszTo 는 디렉터리로 간주됩니다. 그렇지 않으면 pszTo 는 파일로 간주됩니다.

반환 값

형식: BOOL

성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.

설명

이 함수는 한 쌍의 경로를 사용하고 상대 경로를 한 쪽에서 다른 경로로 생성합니다. 경로는 정규화할 필요는 없지만 공통 접두사를 가져야 합니다. 그렇지 않으면 함수가 실패하고 FALSE를 반환합니다.

예를 들어 시작점 pszFrom을 "c:\FolderA\FolderB\FolderC"로 지정하고 끝점 인 pszTo를 "c:\FolderA\FolderD\FolderE"로 설정합니다. PathRelativePathTopszFrom 에서 pszTo 로의 상대 경로를 "....\FolderD\FolderE"로 반환합니다. pszFrom을 "\FolderA\FolderB\FolderC"로 설정하고 pszTo를 "\FolderA\FolderD\FolderE"로 설정하면 동일한 결과를 얻게 됩니다. 반면에 "c:\FolderA\FolderB" 및 "a:\FolderA\FolderD는 공통 접두사를 공유하지 않으며 함수가 실패합니다. "\"는 접두사로 간주되지 않으며 무시됩니다. pszFrom을 "\FolderA\FolderB"로 설정하고 pszTo를 "\FolderC\FolderD"로 설정하면 함수가 실패합니다.

예제

#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

void main(void)
{
    char szOut[MAX_PATH] = "";
    char szFrom[ ] = "c:\\a\\b\\path";
    char szTo[ ] = "c:\\a\\x\\y\\file";

    cout  <<  "The relative path is relative from: ";
    cout  <<  szFrom;
    cout  <<  "\n";

    cout  <<  "The relative path is relative to: ";
    cout  <<  szTo;
    cout  <<  "\n";

    PathRelativePathTo(szOut,
                       szFrom,
                       FILE_ATTRIBUTE_DIRECTORY,
                       szTo,
                       FILE_ATTRIBUTE_NORMAL);

    cout  <<  "The relative path is: ";
    cout  <<  szOut;
    cout  <<  "\n";
}

OUTPUT:
==================
The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file
The relative path is: ..\..\x\y\file

참고

shlwapi.h 헤더는 PATHRelativePathTo를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional, Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shlwapi.h
라이브러리 Shlwapi.lib
DLL Shlwapi.dll(버전 4.71 이상)