IOleItemContainer::GetObject 方法 (oleidl.h)
检索指向指定对象的指针。
语法
HRESULT GetObject(
[in] LPOLESTR pszItem,
[in] DWORD dwSpeedNeeded,
[in] IBindCtx *pbc,
[in] REFIID riid,
[out] void **ppvObject
);
参数
[in] pszItem
所请求对象的容器名称。
[in] dwSpeedNeeded
指示调用方将等待获取对象的大致时间。 可能的值取自枚举 BINDSPEED。
[in] pbc
指向要在此绑定操作中使用的绑定上下文对象上的 IBindCtx 接口的指针。 绑定上下文缓存绑定过程中绑定的对象,包含应用于使用绑定上下文的所有操作的参数,并提供绑定实现应检索有关其环境的信息的方法。
[in] riid
对所请求的接口指针标识符的引用。
[out] ppvObject
接收 riid 中请求的接口指针的指针变量的地址。 成功返回后,*ppvObject 包含指向 pszItem 命名对象的请求接口指针。 成功后,实现必须在 *ppvObject 上调用 AddRef;调用方负责调用 Release。 如果发生错误,实现会将 *ppvObject 设置为 NULL。
返回值
此方法可以返回E_OUTOFMEMORY的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
绑定操作无法在绑定上下文 的BIND_OPTS 结构指定的时间限制内完成,也无法以 dwSpeedNeeded 参数指示的速度完成。 |
|
参数 pszItem 不标识此容器中的对象。 |
|
请求的接口不可用。 |
注解
IMoniker::BindToObject 的项名字对象实现调用此方法,并将存储在项名字对象中的名称作为 pszItem 参数传递。
实施者说明
IOleItemContainer::GetObject 的实现应首先确定 pszItem 是否是容器对象之一的有效名称。 否则,应返回MK_E_NOOBJECT。如果 pszItem 命名嵌入式或链接对象,则实现必须检查 dwSpeedNeeded 参数的值。 如果值BINDSPEED_IMMEDIATE且对象尚未加载,则应返回MK_E_EXCEEDEDDEADLINE。 如果加载对象,则实现应确定对象是否 (运行,例如,通过) 调用 OleIsRunning 函数。 如果它未运行且 dwSpeedNeeded 值BINDSPEED_MODERATE,则实现应返回MK_E_EXCEEDEDDEADLINE。 如果对象未运行且 dwSpeedNeeded BINDSPEED_INDEFINITE,则实现应调用 OleRun 函数,以将对象置于运行状态。 然后,它可以查询 对象以获取请求的接口。 请注意,在查询接口之前,必须运行 对象。
如果 pszItem 命名为伪对象,则实现可以忽略 dwSpeedNeeded 参数,因为伪对象在容器运行时正在运行。 在这种情况下,实现只需查询请求的接口即可。
如果需要比 dwSpeedNeeded 提供的更具体的时间限制信息,可以调用对pbc 参数的 IBindCtx::GetBindOptions 获取实际的截止时间参数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | oleidl.h |