异步和同步名字对象

标准同步 OLE 名字对象的客户端通常创建并保存对名字对象的引用,以及绑定期间要使用的绑定上下文。 下图显示了使用传统名字对象所涉及的组件。

关系图,显示连接到系统提供的绑定上下文或任何名字对象的客户端。

客户端通常通过调用 CreateFileMonikerCreateItemMonikerCreatePointerMoniker 等函数来创建标准名字对象,或者,因为它们可以通过 OleSaveToStreamOleLoadFromStream保存到持久性存储。 还可以通过调用 IBindHost::CreateMoniker 方法从容器对象获取名字对象。 客户端通过调用 CreateBindCtx 函数来创建绑定上下文,然后使用调用 IMoniker::BindToStorageIMoniker::BindToObject将绑定上下文传递给名字对象。

如下图所示,异步名字对象的客户端还会创建并保存对名字对象和绑定上下文的引用,供绑定使用。

关系图,显示客户端提供、Monker-Provided 和系统提供之间的连接。

为了获取异步行为,客户端在 bind-status-callback 对象上实现 IBindStatusCallback 接口,并调用 RegisterBindStatusCallback 函数或 CreateAsyncBindCtx 函数来向绑定上下文注册此接口。 名字对象在调用 IBindStatusCallback::OnStartBinding 方法时,将指针传递给其 IBinding 接口。 客户端告知异步名字对象如何从名字对象对 IBindStatusCallback::GetBindInfo 方法的调用返回时绑定。

异步名字对象