指针名字对象
指针名字对象 标识只能存在于活动或正在运行状态的对象。 这不同于其他名字对象类,这些类标识可存在于被动状态或主动状态的对象。
例如,假设应用程序具有没有持久表示形式的对象。 通常,如果应用程序的客户端需要访问该对象,则只需将客户端传递给该对象的指针。 但是,假设你的客户端需要名字对象。 对象不能使用文件名字对象进行标识,因为它不存储在文件中,也不能与项名字对象一起标识,因为它不包含在另一个对象中。
相反,应用程序可以创建指针名字对象,该名字对象只是在内部包含指针,并将其传递给客户端。 客户端可以像对待任何其他名字对象一样对待此名字对象。 但是,当客户端在指针名字对象上调用 IMoniker::BindToObject 时,名字对象代码不会检查正在运行的对象表(ROT)或从存储加载任何内容。 相反,名字对象代码只需在存储在名字对象中的指针上调用 QueryInterface。
指针名字对象允许仅存在于活动或正在运行状态的对象参与名字对象作,并由名字对象客户端使用。 指针名字对象和其他名字对象类之间的一个重要区别是,指针名字对象无法保存到持久性存储中。 如果这样做,调用 IMoniker::Save 方法将返回错误。 这意味着指针名字对象仅在特殊情况下有用。 如果需要使用指针名字对象,可以使用 CreatePointerMoniker 函数。
相关主题