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从客户端请求扩展信息,从而允许客户端提供会影响绑定作的协议特定信息。
有关详细信息,请参阅以下主题:
相关主题