IRunningObjectTable::GetObject 方法 (objidl.h)

确定由指定名字对象标识的对象是否正在运行,如果正在运行,则检索指向该对象的指针。

语法

HRESULT GetObject(
  [in]  IMoniker *pmkObjectName,
  [out] IUnknown **ppunkObject
);

参数

[in] pmkObjectName

指向名字对象上的 IMoniker 接口的指针。

[out] ppunkObject

指向 IUnknown 指针变量的指针,该变量接收指向正在运行的 对象的接口指针。 成功后,实现对 对象调用 AddRef ;调用 Release 由调用方负责。 如果对象未运行或发生错误,则实现会将 *ppunkObject 设置为 NULL

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
指示在 ROT 中找到 pmkObjectName 并检索了指针。
S_FALSE
ROT 中没有 pmkObjectName 的条目,或者它标识的对象不再运行 (在这种情况下,该条目) 撤销。

注解

此方法检查 ROT 中是否存在由 pmkObjectName 指定的名字对象。 如果该名字对象以前已通过调用 IRunningObjectTable::Register 注册,则此方法返回当时注册的指针。

调用方备注

通常,仅当编写自己的名字对象类时,才调用 IRunningObjectTable::GetObject 方法 (即) 实现 IMoniker 接口。 通常从 IMoniker::BindToObject 的实现中调用此方法。

但请注意,并非所有 IMoniker::BindToObject 的实现都需要调用此方法。 如果希望名字对象具有前缀 (由非 NULLpmkToLeft 参数指示为 IMoniker::BindToObject) ,则不应检查 ROT。 原因是只有完整的名字对象注册到 ROT,并且如果名字对象具有前缀,则名字对象是复合对象的一部分,因此不完整。 相反,名字对象应从前缀标识的对象请求服务 (例如,由名字对象标识的对象的容器) 。

要求

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

另请参阅

IMoniker::BindToObject

IRunningObjectTable