标准同步 OLE 名字对象的客户端通常创建并保存对名字对象的引用,以及绑定期间要使用的绑定上下文。 下图显示了使用传统名字对象所涉及的组件。
客户端通常通过调用 CreateFileMoniker、CreateItemMoniker或 CreatePointerMoniker 等函数来创建标准名字对象,或者,因为它们可以通过 OleSaveToStream 和 OleLoadFromStream保存到持久性存储。 还可以通过调用 IBindHost::CreateMoniker 方法从容器对象获取名字对象。 客户端通过调用 CreateBindCtx 函数来创建绑定上下文,然后使用调用 IMoniker::BindToStorage 或 IMoniker::BindToObject将绑定上下文传递给名字对象。
如下图所示,异步名字对象的客户端还会创建并保存对名字对象和绑定上下文的引用,供绑定使用。
为了获取异步行为,客户端在 bind-status-callback 对象上实现 IBindStatusCallback 接口,并调用 RegisterBindStatusCallback 函数或 CreateAsyncBindCtx 函数来向绑定上下文注册此接口。 名字对象在调用 IBindStatusCallback::OnStartBinding 方法时,将指针传递给其 IBinding 接口。 客户端告知异步名字对象如何从名字对象对 IBindStatusCallback::GetBindInfo 方法的调用返回时绑定。
相关主题