IROTData::GetComparisonData 方法 (objidl.h)

从名字对象中检索数据,该名字对象可用于测试名字对象是否与另一个名字对象相等。

语法

HRESULT GetComparisonData(
  [out] byte  *pbData,
  [in]  ULONG cbMax,
  [out] ULONG *pcbData
);

参数

[out] pbData

指向接收比较数据的缓冲区的指针。

[in] cbMax

pbData 中指定的缓冲区的长度。

[out] pcbData

指向接收比较数据的长度的变量的指针。

返回值

此方法可以返回E_OUTOFMEMORY和S_OK的标准返回值。

注解

GetComparisonData 方法主要由运行的对象表 (ROT) 调用。 方法返回的比较数据根据另一个名字对象返回的比较数据测试二进制相等性。 利用该参数,ROT 可以查找检索到的数据的末尾。

实施者说明

返回的比较数据必须唯一标识名字对象,同时尽可能短。 比较数据应包含有关名字对象的内部状态以及名字对象的 CLSID 的信息。 例如,文件名字对象的比较数据将包括存储在名字对象中的路径名,以及文件名字对象实现的 CLSID。 这样就可以区分两个名字对象,这些名字对象恰好存储了类似的状态信息,但它们是不同名字对象类的实例。

名字对象的比较数据长度不能超过 2048 个字节。 对于复合名字对象,其所有组件的比较数据的总长度不能超过 2048 字节;因此,如果名字对象可以是复合名字对象中的组件,则返回的比较数据必须明显小于 2048 字节。

如果比较数据长于 cbMax 参数指定的值,则必须返回错误。 请注意,当对复合名字对象的组件调用 GetComparisonData 时,对于序列中的每个名字对象, cbMax 的值会变小。

要求

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

另请参阅

IROTData