다음을 통해 공유


MkParseDisplayName 함수(objbase.h)

문자열을 문자열로 명명된 개체를 식별하는 모니커로 변환합니다.

이 함수는 모니커와 연결된 표시 이름을 검색하는 IMoniker::GetDisplayName 작업의 역함수입니다.

구문

HRESULT MkParseDisplayName(
  [in]  LPBC      pbc,
  [in]  LPCOLESTR szUserName,
  [out] ULONG     *pchEaten,
  [out] LPMONIKER *ppmk
);

매개 변수

[in] pbc

이 바인딩 작업에 사용할 바인딩 컨텍스트 개체의 IBindCtx 인터페이스에 대한 포인터입니다.

[in] szUserName

구문 분석할 표시 이름에 대한 포인터입니다.

[out] pchEaten

사용된 szUserName 의 문자 수에 대한 포인터입니다. 함수가 성공하면 *pchEatenszUserName의 길이입니다. 그렇지 않으면 성공적으로 구문 분석된 문자 수입니다.

[out] ppmk

szUserName에서 빌드된 모니커에 대한 인터페이스 포인터를 수신하는 IMoniker* 포인터 변수의 주소입니다. 성공하면 함수가 모니커에서 AddRef 를 호출하고 호출자는 Release를 호출합니다. 오류가 발생하면 지정된 인터페이스 포인터에는 오류가 발생하기 전에 메서드가 만들 수 있었던 모니커가 많이 포함됩니다.

반환 값

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

반환 코드 Description
S_OK
구문 분석 작업이 성공했고 모니커가 만들어졌습니다.
MK_E_SYNTAX
결과 복합 모니커 구문의 파일 이름 구문 오류 또는 오류입니다.
 

이 함수는 IMoniker::BindToObject, IOleItemContainer::GetObject 또는 IParseDisplayName::P arseDisplayName에서 반환된 오류 값을 반환할 수도 있습니다.

설명

MkParseDisplayName 함수는 사람이 읽을 수 있는 이름을 링크 원본을 식별하는 데 사용할 수 있는 모니커로 구문 분석합니다. 결과 모니커는 간단한 모니커(예: 파일 모니커)일 수도 있고, 구성 요소 모니커 조각으로 구성된 제네릭 복합체일 수도 있습니다. 예를 들어 표시 이름 "c:\mydir\somefile!item 1"

다음 제네릭 복합 모니커로 구문 분석할 수 있습니다. FileMoniker는 "c:\mydir\somefile") + ("item 1"을 기반으로 하는 ItemMoniker)을 기반으로 합니다.

MkParseDisplayName의 가장 일반적인 사용은 표준 링크 대화 상자를 구현하는 것입니다. 이 대화 상자를 사용하면 최종 사용자가 문자열을 입력하여 연결된 개체의 원본을 지정할 수 있습니다. 애플리케이션에서 원격 참조를 허용하는 매크로 언어(문서 외부의 요소 참조)를 지원하는 경우 MkParseDisplayName 을 호출해야 할 수도 있습니다.

표시 이름을 구문 분석하려면 바인딩 작업 중에 활성화되는 것과 동일한 개체를 활성화해야 하는 경우가 많으므로 바인딩만큼 비용이 많이 들 수 있습니다(성능 측면에서). 구문 분석 작업 중에 바인딩된 개체는 함수에 전달된 바인딩 컨텍스트에서 캐시됩니다. MkParseDisplayName에서 반환된 모니커를 바인딩하려는 경우 함수가 반환된 직후 동일한 바인딩 컨텍스트를 사용하여 개체를 두 번째로 활성화할 필요가 없도록 하는 것이 가장 좋습니다.

MkParseDisplayName 은 모니커로 이해되는 만큼의 표시 이름을 구문 분석합니다. 그런 다음 함수는 새로 만든 모니커에서 IMoniker::P arseDisplayName 을 호출하고 나머지 표시 이름을 전달합니다. ParseDisplayName에서 반환된 모니커는 기존 모니커의 끝에 구성되며, 표시 이름이 구문 분석되지 않은 상태로 유지되면 컴퍼지션 결과에 따라 ParseDisplayName이 호출됩니다. 이 프로세스는 전체 표시 이름이 구문 분석될 때까지 반복됩니다.

MkParseDisplayName 은 성공한 첫 번째 전략을 사용하여 표시 이름의 시작을 구문 분석하기 위해 다음 전략을 시도합니다.

  1. 함수는 실행 중인 개체 테이블에서 유효한 파일 이름 문자로만 구성된 표시 이름의 모든 접두사에 해당하는 파일 모니커를 찾습니다. 이 전략은 아직 저장되지 않은 문서를 식별할 수 있습니다.
  2. 함수는 유효한 파일 이름 문자로만 구성된 표시 이름의 최대 접두사를 확인하여 OLE 1 문서가 해당 이름으로 등록되었는지 확인합니다. 이 경우 반환된 모니커는 OLE 2의 OLE 1 호환성 계층에서 제공하는 내부 모니커입니다.
  3. 함수는 파일 시스템을 참조하여 표시 이름의 접두사가 기존 파일과 일치하는지 여부를 검사. 파일 이름은 드라이브 절대, 드라이브 상대, 작업 디렉터리 상대 또는 명시적 네트워크 공유 이름으로 시작할 수 있습니다. 이것은 일반적인 경우입니다.
  4. 표시 이름의 초기 문자가 '@'인 경우 함수는 바로 뒤에 법적 ProgID 구문을 준수하는 가장 긴 문자열을 찾습니다. 함수는 CLSIDFromProgID 함수를 사용하여 이 문자열을 CLSID로 변환합니다. CLSID가 OLE 2 클래스를 나타내는 경우 함수는 해당 클래스 개체를 로드하고 IParseDisplayName 인터페이스 포인터를 요청합니다. 그러면 결과 IParseDisplayName 인터페이스에 '@'부터 구문 분석할 전체 문자열이 제공됩니다. CLSID가 OLE 1 클래스를 나타내는 경우 함수는 ProgID 다음에 있는 문자열을 파일 이름|항목 구문이 있는 OLE1/DDE 링크 지정자로 처리합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 objbase.h
라이브러리 Ole32.lib
DLL Ole32.dll
API 세트 ext-ms-win-com-ole32-l1-1-1(Windows 8.1 도입)

추가 정보

IMoniker::GetDisplayName

IMoniker::P arseDisplayName

IParseDisplayName