基于此名字对象 (包含此名字对象对象数据) 与其他名字对象共享的前缀的公共前缀创建新的名字对象。
此函数仅在 IMoniker::CommonPrefixWith 的实现中调用。
语法
HRESULT MonikerCommonPrefixWith(
  [in]  LPMONIKER pmkThis,
  [in]  LPMONIKER pmkOther,
  [out] LPMONIKER *ppmkCommon
);
参数
[in] pmkThis
指向其中一个名字对象上 IMoniker 接口的指针,该名字对象需要一个公共前缀;通常是此调用用于实现 IMoniker::CommonPrefixWith 的名字对象。
[in] pmkOther
指向要与第一个名字对象进行比较的名字对象上的 IMoniker 接口的指针。
[out] ppmkCommon
基于 pmkThis 和 pmkOther 的公共前缀接收指向名字对象的接口指针的 IMoniker* 指针变量的地址。 成功后,函数已对名字对象调用 AddRef ,调用方负责调用 Release。 如果发生错误,则提供的接口指针值为 NULL。
返回值
此函数可以返回E_OUTOFMEMORY和E_UNEXPECTED的标准返回值,以及以下值。
| 返回代码 | 说明 | 
|---|---|
| 
 | 存在既不是 pmkThis 也不是 pmkOther 的通用前缀。 | 
| 
 | 整个 pmkOther 名字对象是 pmkThis 名字对象的前缀。 | 
| 
 | 整个 pmkThis 名字对象是 pmkOther 名字对象的前缀。 | 
| 
 | pmkThis 和 pmkOther 名字对象相等。 | 
| 
 | 名字对象没有通用前缀。 | 
| 
 | 对相对名字对象调用了此函数。 采用相对名字对象的通用前缀没有意义。 | 
注解
IMoniker::CommonPrefixWith 的实现应首先检查另一个名字对象是否是你以特殊方式识别和处理的类型。 否则,应调用 MonikerCommonPrefixWith,将自身作为 pmkThis 传递,将另一个名字对象作为 pmkOther 传递。 MonikerCommonPrefixWith 正确处理任一名字对象为泛型复合的情况。
仅当 pmkThis 和 pmkOther 都是绝对名字对象 (其中绝对名字对象是文件名字对象或泛型复合对象,其最左侧组件是文件名字对象,并且文件名字对象表示) 绝对路径时,才应调用此函数。 不要对相对名字对象调用此函数。
要求
| 要求 | 值 | 
|---|---|
| 最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] | 
| 最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] | 
| 目标平台 | Windows | 
| 标头 | objbase.h | 
| Library | Ole32.lib | 
| DLL | Ole32.dll |