다음을 통해 공유


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

이 모니커가 지정된 모니커와 공통적으로 갖는 접두사를 기반으로 새 모니커를 만듭니다.

구문

HRESULT CommonPrefixWith(
  [in]  IMoniker *pmkOther,
  [out] IMoniker **ppmkPrefix
);

매개 변수

[in] pmkOther

일반적인 접두사인지 여부를 확인하기 위해 이 모니커와 비교할 다른 모니커의 IMoniker 인터페이스에 대한 포인터입니다.

[out] ppmkPrefix

이 모니커 및 pmkOther의 공통 접두사인 모니커에 대한 인터페이스 포인터를 수신하는 IMoniker* 포인터 변수의 주소입니다. 성공하면 구현에서 결과 모니커에서 AddRef 를 호출해야 합니다. 릴리스를 호출하는 것은 호출자의 책임입니다. 오류가 발생하거나 일반적인 접두사 없는 경우 구현은 *ppmkPrefixNULL로 설정해야 합니다.

반환 값

이 메서드는 E_OUTOFMEMORY 표준 반환 값과 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
이 모니커나 pmkOther가 아닌 공통 접두사도 있습니다.
MK_S_NOPREFIX
일반적인 접두사는 없습니다.
MK_S_HIM
전체 pmkOther 는 이 모니커의 접두사입니다.
MK_S_US
두 모니커가 동일합니다.
MK_S_ME
이 모니커는 pmkOther 모니커의 접두사입니다.
MK_S_NOTBINDABLE
이 메서드는 상대 모니커에서 호출되었습니다. 상대 모니커에 공통 접두사를 사용하는 것은 의미가 없습니다.

설명

CommonPrefixWith 는 이 모니커 개체에서 모니커의 공통 접두사 및 다른 모니커로 구성된 새 모니커를 만듭니다. 예를 들어 한 모니커가 "c:\projects\secret\art\pict1.bmp" 경로를 나타내고 다른 모니커가 "c:\projects\secret\docs\chap1.txt" 경로를 나타내는 경우 이러한 두 모니커의 공통 접두사는 "c:\projects\secret" 경로를 나타내는 모니커가 됩니다.

발신자에게 참고 사항

CommonPrefixWith 메서드는 주로 IMoniker::RelativePathTo 메서드의 구현에서 호출됩니다. 모니커를 사용하여 개체를 찾는 클라이언트는 이 메서드를 호출할 필요가 거의 없습니다.

pmkOther와 이 모니커가 모두 절대 모니커인 경우에만 이 메서드를 호출합니다. 절대 모니커는 파일 모니커 또는 맨 왼쪽 구성 요소가 절대 경로를 나타내는 파일 모니커인 제네릭 복합체입니다. 의미 있는 결과를 생성하지 않으므로 상대 모니커에서 이 메서드를 호출하지 마세요.

구현자에 대한 참고 사항

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

구현별 참고 사항

구현 참고
안티 모니커 다른 모니커도 안티 모니커인 경우 메서드는 MK_S_US 반환하고 ppmkPrefix를 이 모니커로 설정합니다. 그렇지 않으면 메서드는 MonikerCommonPrefixWith 함수를 호출합니다. 이 함수는 다른 모니커가 제네릭 복합인 경우를 올바르게 처리합니다.
클래스 모니커 pmkOther가 이 모니커와 같으면 이 모니커에 대한 포인터를 검색하고 MK_S_US 반환합니다. pmkOther가 클래스 모니커이지만 이 모니커와 같지 않은 경우 는 MK_E_NOPREFIX 반환합니다. 그렇지 않으면 는 pmkThis, pmkOtherppmkPrefix로 자신을 사용하여 MonikerCommonPrefixWith를 호출한 결과를 반환하며, pmkOther가 제네릭 복합 모니커인 경우를 처리합니다.
파일 모니커 두 모니커가 모두 파일 모니커인 경우 이 메서드는 두 파일 모니커의 시작 부분에 있는 공통 구성 요소를 기반으로 하는 파일 모니커를 반환합니다. 파일 모니커의 구성 요소는 다음 형식일 수 있습니다.
  • \\server\share 형식의 컴퓨터 이름입니다. 컴퓨터 이름은 단일 구성 요소로 처리되므로 "\\myserver\public\work" 및 "\\myserver\private\games" 경로를 나타내는 두 모니커에는 공통 접두사로 "\\myserver"가 없습니다.
  • 드라이브 지정(예: "C:").
  • 디렉터리 또는 파일 이름입니다.
다른 모니커가 파일 모니커가 아닌 경우 이 메서드는 MonikerCommonPrefixWith 함수에 대한 호출에서 두 모니커를 모두 전달합니다. 이 함수는 다른 모니커가 제네릭 복합인 경우를 올바르게 처리합니다.

이 메서드는 일반적인 접두사 없는 경우 MK_E_NOPREFIX 반환합니다.

제네릭 복합 모니커 다른 모니커가 복합인 경우 이 메서드는 각 복합의 구성 요소를 왼쪽에서 오른쪽으로 비교합니다. 반환된 공통 접두사 모니커는 두 모니커에 공통된 가장 왼쪽 구성 요소의 수에 따라 복합 모니커일 수도 있습니다. 다른 모니커가 복합 모니커가 아닌 경우 메서드는 단순히 이 모니커의 맨 왼쪽 구성 요소와 비교합니다.

모니커가 같으면 메서드는 MK_S_US 반환하고 ppmkPrefix 를 이 모니커로 설정합니다. 다른 모니커가 이 모니커의 접두사인 경우 메서드는 MK_S_HIM 반환하고 ppmkPrefix 를 다른 모니커로 설정합니다. 이 모니커가 다른 모니커의 접두사인 경우 이 메서드는 MK_S_ME 반환하고 ppmkPrefix 를 이 모니커로 설정합니다.

일반적인 접두사 없는 경우 이 메서드는 MK_E_NOPREFIX 반환하고 ppmkPrefixNULL로 설정합니다.

항목 모니커 다른 모니커가 이 모니커와 같은 항목 모니커인 경우 이 메서드는 *ppmkPrefix 를 이 모니커로 설정하고 MK_S_US 반환합니다. 그렇지 않으면 메서드는 MonikerCommonPrefixWith 함수를 호출합니다. 이 함수는 다른 모니커가 제네릭 복합인 경우를 올바르게 처리합니다.
OBJREF 모니커 두 모니커가 같으면 이 메서드는 MK_S_US 반환하고 *ppmkPrefixNULL로 설정합니다. 다른 모니커가 OBJREF 모니커가 아닌 경우 이 메서드는 두 모니커를 모두 MonikerCommonPrefixWith 함수에 전달합니다. 이 함수는 다른 모니커가 제네릭 복합인 경우를 올바르게 처리합니다.

일반적인 접두사 없는 경우이 메서드는 MK_E_NOPREFIX 반환 합니다.

포인터 모니커 두 모니커가 같으면 이 메서드는 MK_S_US 반환하고 *ppmkPrefix 를 이 모니커로 설정합니다. 그렇지 않으면 메서드는 MK_E_NOPREFIX 반환하고 *ppmkPrefixNULL로 설정합니다.
URL 모니커 이 메서드는 E_NOTIMPL 반환합니다.

요구 사항

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

추가 정보

Imoniker

MonikerCommonPrefixWith