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 의 문자 수에 대한 포인터입니다. 함수가 성공하면 *pchEaten 은 szUserName의 길이입니다. 그렇지 않으면 성공적으로 구문 분석된 문자 수입니다.
[out] ppmk
szUserName에서 빌드된 모니커에 대한 인터페이스 포인터를 수신하는 IMoniker* 포인터 변수의 주소입니다. 성공하면 함수가 모니커에서 AddRef 를 호출하고 호출자는 Release를 호출합니다. 오류가 발생하면 지정된 인터페이스 포인터에는 오류가 발생하기 전에 메서드가 만들 수 있었던 모니커가 많이 포함됩니다.
반환 값
이 함수는 E_OUTOFMEMORY 표준 반환 값과 다음 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
구문 분석 작업이 성공했고 모니커가 만들어졌습니다. |
|
결과 복합 모니커 구문의 파일 이름 구문 오류 또는 오류입니다. |
이 함수는 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 은 성공한 첫 번째 전략을 사용하여 표시 이름의 시작을 구문 분석하기 위해 다음 전략을 시도합니다.
- 함수는 실행 중인 개체 테이블에서 유효한 파일 이름 문자로만 구성된 표시 이름의 모든 접두사에 해당하는 파일 모니커를 찾습니다. 이 전략은 아직 저장되지 않은 문서를 식별할 수 있습니다.
- 함수는 유효한 파일 이름 문자로만 구성된 표시 이름의 최대 접두사를 확인하여 OLE 1 문서가 해당 이름으로 등록되었는지 확인합니다. 이 경우 반환된 모니커는 OLE 2의 OLE 1 호환성 계층에서 제공하는 내부 모니커입니다.
- 함수는 파일 시스템을 참조하여 표시 이름의 접두사가 기존 파일과 일치하는지 여부를 검사. 파일 이름은 드라이브 절대, 드라이브 상대, 작업 디렉터리 상대 또는 명시적 네트워크 공유 이름으로 시작할 수 있습니다. 이것은 일반적인 경우입니다.
- 표시 이름의 초기 문자가 '@'인 경우 함수는 바로 뒤에 법적 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 도입) |