IParseDisplayName::P arseDisplayName 方法 (oleidl.h)

分析指定的显示名称并创建相应的名字对象。

语法

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

参数

[in] pbc

指向要在此绑定操作中使用的绑定上下文的指针。 请参阅 IBindCtx

[in] pszDisplayName

要分析的显示名称。

[out] pchEaten

指向变量的指针,该变量接收与 ppmkOut 名字对象对应的显示名称中的字符数。

[out] ppmkOut

指向 IMoniker 指针变量的指针,该变量接收指向生成的名字对象的接口指针。 如果发生错误,实现会将 *ppmkOut 设置为 NULL。 如果 *ppmkOut 为非 NULL,则实现必须调用 AddRef;调用 Release 由调用方负责。

返回值

此方法可以返回E_OUTOFMEMORY和E_UNEXPECTED的标准返回值,以及以下值。

返回代码 说明
S_OK
该方法已成功完成。
MK_E_SYNTAX
显示名称中存在语法错误。 分析失败,因为 pszDisplayName 只能部分解析为名字对象。 在本例中,*pchEaten 具有成功解析为名字对象前缀的字符数。 参数 ppmkOut 应为 NULL
MK_E_NOOBJECT
显示名称不标识此命名空间中的组件。
E_INVALIDARG
一个或多个参数无效。

注解

通常,语法上有效且表示对象的 pszDisplayName 的最大前缀应由此方法使用并转换为名字对象。

通常,此方法由 MkParseDisplayNameMkParseDisplayNameEx 调用。 在分析操作的初始步骤中,这些函数可以直接从使用“@ProgID”或“ProgID”表示法标识的类实例中检索 IParseDisplayName 接口。 后续分析步骤可以查询中间对象上的 接口。

MkParseDisplayName 和 MkParseDisplayNameEx 的main循环通过在当前保留的名字对象上调用 IMoniker 接口中的等效方法(即 IMoniker::P arseDisplayName)来查找下一个名字对象部分。 在此对 IMoniker::P arseDisplayName 的调用中,MkParseDisplayNameMkParseDisplayNameEx 函数在 pmkToLeft 参数中传递 NULL。 如果当前保存的名字对象是泛型复合,则对 IMoniker::P arseDisplayName 的调用由该复合对象转发到其最后一个部分,并将复合项的前缀传递到 pmkToLeft 中的片段左侧。

某些名字对象类能够在内部自行处理此分析,因为它们设计为仅指定某些类型的对象。 其他人需要绑定到他们指定的对象来完成分析过程。 与往常一样,这些对象不应由 IMoniker::P arseDisplayName 释放,而应通过 IBindCtx::RegisterObjectBoundIBindCtx::GetRunningObjectTable ,后跟 IRunningObjectTable::Register 传输到绑定上下文,以便稍后发布。

要求

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

另请参阅

IMoniker::P arseDisplayName

IParseDisplayName

MkParseDisplayName

MkParseDisplayNameEx