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的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
显示名称中存在语法错误。 分析失败,因为 pszDisplayName 只能部分解析为名字对象。 在本例中,*pchEaten 具有成功解析为名字对象前缀的字符数。 参数 ppmkOut 应为 NULL。 |
|
显示名称不标识此命名空间中的组件。 |
|
一个或多个参数无效。 |
注解
通常,语法上有效且表示对象的 pszDisplayName 的最大前缀应由此方法使用并转换为名字对象。
通常,此方法由 MkParseDisplayName 或 MkParseDisplayNameEx 调用。 在分析操作的初始步骤中,这些函数可以直接从使用“@ProgID”或“ProgID”表示法标识的类实例中检索 IParseDisplayName 接口。 后续分析步骤可以查询中间对象上的 接口。
MkParseDisplayName 和 MkParseDisplayNameEx 的main循环通过在当前保留的名字对象上调用 IMoniker 接口中的等效方法(即 IMoniker::P arseDisplayName)来查找下一个名字对象部分。 在此对 IMoniker::P arseDisplayName 的调用中,MkParseDisplayName 或 MkParseDisplayNameEx 函数在 pmkToLeft 参数中传递 NULL。 如果当前保存的名字对象是泛型复合,则对 IMoniker::P arseDisplayName 的调用由该复合对象转发到其最后一个部分,并将复合项的前缀传递到 pmkToLeft 中的片段左侧。
某些名字对象类能够在内部自行处理此分析,因为它们设计为仅指定某些类型的对象。 其他人需要绑定到他们指定的对象来完成分析过程。 与往常一样,这些对象不应由 IMoniker::P arseDisplayName 释放,而应通过 IBindCtx::RegisterObjectBound 或 IBindCtx::GetRunningObjectTable ,后跟 IRunningObjectTable::Register 传输到绑定上下文,以便稍后发布。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | oleidl.h |