URL 名字对象
OLE 名字对象体系结构为处理 URL 提供了一个方便的编程模型。 名字对象体系结构支持通过 MkParseDisplayName 函数和 IParseDisplayName 和 IMoniker 接口进行可扩展和完整的名称分析,以及通过 IMoniker::GetDisplayName 方法进行可打印的名称分析。 IMoniker 接口是实际使用你遇到的 URL 的方式,而构建适合名字对象体系结构的组件是在实践中实际扩展 URL 命名空间的方法。
系统提供的名字对象类(URL 名字对象)为生成和使用某些 URL 提供了一个框架。 由于 URL 经常在高延迟网络中查看资源,因此 URL 名字对象支持异步绑定和同步绑定。 URL 名字对象当前不支持异步存储。
下图显示了使用 URL 名字对象所涉及的组件。 你应该很熟悉所有这些组件。 (请参阅异步名字对象。)
与所有名字对象客户端一样,URL 名字对象的用户通常会创建并保存对名字对象以及绑定期间要使用的绑定上下文的引用(IMoniker::BindToStorage 或 IMoniker::BindToObject)。 为了支持异步绑定,客户端可以实现 bind-status-callback 对象,该对象实现 IBindStatusCallback 接口,并使用 RegisterBindStatusCallback 函数将其注册到绑定上下文中。 在调用 IBindStatusCallback::OnStartBinding 期间,此对象将接收传输的IBinding 接口。
URL 名字对象通过分析 URL 前缀来标识所使用的协议,然后从传输层检索 IBinding 接口。 客户端使用 IBinding 来支持绑定操作暂停、取消和优先级划分。 回调对象还会通过 IBindStatusCallback::OnProgress 接收进度通知,通过 IBindStatusCallback::OnDataAvailable 接收数据可用性通知,以及关于绑定状态的各种其他传输层通知。 URL 名字对象或特定传输层还可以通过 IBindStatusCallback::QueryInterface 向客户端请求扩展信息,从而允许客户端提供将影响绑定操作的协议特定信息。
有关详情,请参阅以下主题:
相关主题