다음을 통해 공유


IMoniker::RelativePathTo 메서드(objidl.h)

이 모니커와 지정된 모니커 사이에 상대 모니커를 만듭니다.

구문

HRESULT RelativePathTo(
  [in]  IMoniker *pmkOther,
  [out] IMoniker **ppmkRelPath
);

매개 변수

[in] pmkOther

상대 경로를 사용해야 하는 모니커의 IMoniker 인터페이스에 대한 포인터입니다.

[out] ppmkRelPath

상대 모니커에 대한 인터페이스 포인터를 수신하는 IMoniker 포인터 변수에 대한 포인터입니다. 성공하면 구현은 새 모니커에서 AddRef 를 호출해야 합니다. 릴리스를 호출하는 것은 호출자의 책임입니다. 오류가 발생하면 구현에서 *ppmkRelPathNULL로 설정합니다.

반환 값

이 메서드는 다음 값뿐만 아니라 E_OUTOFMEMORY 및 E_UNEXPECTED 표준 반환 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
메서드가 완료되었습니다.
MK_S_HIM
두 모니커에서 공통 접두사를 공유하지 않으며 ppmkRelPath 에서 반환된 모니커는 pmkOther입니다.
MK_E_NOTBINDABLE
이 모니커는 항목 모니커와 같은 상대 모니커입니다. 상대 경로를 확인하려면 먼저 이 모니커를 컨테이너의 모니커로 구성해야 합니다.

설명

상대 모니커는 상대 경로(예: ".)와 유사합니다. \backup"). 예를 들어 경로 "c:\projects\secret\art\pict1.bmp"을 나타내는 모니커와 "c:\projects\secret\docs\chap1.txt" 경로를 나타내는 다른 모니커가 있다고 가정해 보겠습니다. 첫 번째 모니커에서 RelativePathTo 를 호출하고 두 번째 모니커를 pmkOther 매개 변수로 전달하면 경로 ".를 나타내는 상대 모니커가 생성됩니다. \docs\chap1.txt".

발신자에게 참고 사항

모니커 클라이언트는 일반적으로 RelativePathTo를 호출할 필요가 없습니다. 이 메서드는 주로 연결된 개체에 대한 기본 처리기에서 호출됩니다. 연결된 개체는 링크 원본을 식별하는 절대 모니커와 상대 모니커를 모두 포함합니다. 이렇게 하면 사용자가 컨테이너와 원본 파일이 모두 포함된 디렉터리 트리를 이동하는 경우 링크 추적이 가능합니다. 기본 처리기는 이 메서드를 호출하여 컨테이너 문서에서 링크 원본으로의 상대 모니커를 만듭니다. 즉, 컨테이너 문서를 식별하는 모니커에서 RelativePathTo 를 호출하고 링크 원본을 식별하는 모니커를 pmkOther 매개 변수로 전달합니다.

RelativePathTo를 호출하는 경우 절대 모니커(예: 파일 모니커 또는 왼쪽 구성 요소가 파일 모니커인 복합 모니커)에서만 호출합니다. 여기서 파일 모니커는 절대 경로를 나타냅니다. 상대 모니커에서 이 메서드를 호출하지 마세요.

구현자에 대한 참고 사항

RelativePathTo의 구현은 먼저 pmkOther가 사용자가 인식하는 클래스의 모니커인지와 특수 처리를 제공할 수 있는 모니커인지를 결정해야 합니다(예: 이 모니커와 동일한 클래스인 경우). 그렇다면 구현에서 상대 경로를 결정해야 합니다. 그렇지 않으면 제네릭 사례를 올바르게 처리하는 MonikerRelativePathTo 함수에 대한 호출에서 두 모니커를 모두 전달해야 합니다.

상대 경로를 결정하는 첫 번째 단계는 이 모니커 및 pmkOther의 공통 접두사를 결정하는 것입니다. 다음 단계는 이 모니커와 pmkOther 를 각각 (P, myTail) 및 (P, otherTail)라고 하는 두 부분으로 나타내는 것입니다. 여기서 P는 공통 접두사입니다. 올바른 상대 경로는 otherTail로 구성된 myTail의 역방향 경로입니다.

Comp( Inv( myTail ), otherTail )

여기서 Comp()는 컴퍼지션 작업을 나타내고 Inv()는 역방향 연산을 나타냅니다.

특정 유형의 모니커의 경우 IMoniker::Inverse 메서드를 사용하여 myTail의 역방향을 생성할 수 없습니다. 예를 들어 파일 모니커는 안티 모니커를 역으로 반환하지만 RelativePathTo 메서드는 각각 경로를 나타내는 하나 이상의 파일 모니커를 사용해야 합니다.

구현별 참고 사항

구현 참고
안티 모니커 이 메서드는 MK_S_HIM 반환하고 *ppmkRelPath 를 다른 모니커로 설정합니다.
클래스 모니커 이 메서드는 이 모니커, pmkOther, ppmkRelPathTRUE와 동일한 pmkSrc를 사용하여 MonikerRelativePathTodwReserved로 호출한 결과를 반환합니다.
파일 모니커 이 메서드는 이 모니커의 오른쪽에 구성될 때 다른 모니커를 생성하는 모니커를 계산합니다. 예를 들어 이 모니커의 경로가 "C:\work\docs\report.doc"이고 다른 모니커가 "C:\work\art\picture.bmp"인 경우 계산된 모니커의 경로는 ".입니다. \.. \art\picture.bmp".
제네릭 복합 모니커 이 메서드는 두 모니커의 공통 접두사를 찾아 공통 접두사를 제거할 때 나머지로 구성된 두 개의 모니커를 만듭니다. 그런 다음 이 모니커의 나머지 부분에 대한 역을 만들고 오른쪽에 있는 다른 모니커의 나머지 부분을 구성합니다.
항목 모니커 이 메서드는 MK_E_NOTBINDABLE 반환하고 *ppmkRelPathNULL로 설정합니다.
OBJREF 모니커 이 메서드는 E_NOTIMPL 반환합니다.
포인터 모니커 이 메서드는 E_NOTIMPL 반환합니다.
URL 모니커 이 메서드는 E_NOTIMPL 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

Imoniker

MonikerRelativePathTo