IMoniker::IsEqual 方法 (objidl.h)

确定此名字对象是否与指定的名字对象相同。

语法

HRESULT IsEqual(
  [in] IMoniker *pmkOtherMoniker
);

参数

[in] pmkOtherMoniker

指向名字对象上 IMoniker 接口的指针,用于与此对象进行比较 () 调用此方法的接口。

返回值

此方法返回S_OK,指示两个名字对象相同,否则S_FALSE。

注解

运行对象表的先前实现 (ROT) 调用此方法。 ROT 的当前实现改用 IROTData 接口。

调用方备注

调用此方法可确定两个名字对象是否相同。 名字对象的简化形式与未引入的形式不同。 应在调用 IsEqual 之前调用 IMoniker::Reduce 方法,因为缩减的名字对象采用最具体的形式。 IsEqual 可能会在两个名字对象减少之前返回S_FALSE,在减少后S_OK。

实施者说明

在执行比较之前,实现不应减少当前名字对象。 调用方负责调用 IMoniker::Reduce 来比较减少的名字对象。

比较为相等的两个名字对象必须使用 IMoniker::Hash 对同一值进行哈希处理。

特定于实现的说明

实现 备注
反名字对象 如果两者都是反名字对象,则此方法返回S_OK;否则,它将返回S_FALSE。
类名字对象 如果 pmkOther 是使用与自身相同的 CLSID 信息构造的类名字对象,则此方法返回S_OK。 否则,该方法返回S_FALSE。 如果 pmkOther 是无效指针,则可能会返回E_INVALIDARG。
文件名字对象 如果使用不区分大小写的比较) ,如果 *pmkOther 是文件名字对象且两个名字对象的路径相同 (,则此方法返回S_OK。 否则,该方法返回S_FALSE。
泛型复合名字对象 如果两个名字对象的分量在按从左到右的顺序进行比较时相等,则此方法返回S_OK。
项名字对象 如果使用不区分大小写的比较) ,此方法返回S_OK两个名字对象都是项名字对象,并且它们的显示名称相同 (;否则,该方法返回S_FALSE。
OBJREF 名字对象 如果使用不区分大小写的比较) ,如果 *pmkOther 是 OBJREF 名字对象且两个名字对象的路径相同, (则此方法返回S_OK。 否则,该方法返回S_FALSE。
指针名字对象 仅当两者都是指针名字对象和它们包装的接口指针相同时,此方法才返回S_OK。
URL 名字对象 如果其他名字对象 (pmkOtherMoniker) 不是 URL 名字对象,则返回S_FALSE,它使用 IPersist::GetClassID 检查 CLSID 是否CLSID_URLMoniker。 如果另一个名字对象是 URL 名字对象,它将比较名字对象的显示名称是否相等,如果它们相同,则返回S_OK,否则返回S_FALSE。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h

另请参阅

IMoniker

IROTData