IPersistStorage::Load 方法 (objidl.h)

从其现有存储加载对象。

语法

HRESULT Load(
  [in] IStorage *pStg
);

参数

[in] pStg

指向要从中加载对象的现有存储的 IStorage 指针。

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。
CO_E_ALREADYINITIALIZED
对象已由之前对 IPersistStorage::Load 方法或 IPersistStorage::InitNew 方法的调用初始化。
E_OUTOFMEMORY
由于内存不足,对象未加载。
E_FAIL
由于内存不足以外的某些原因,未加载对象。

注解

此方法从现有存储初始化对象。 如果容器应用程序调用此方法,则对象将置于加载状态。 如果由默认处理程序调用,此方法会将对象置于运行状态。

在加载或运行对象时,默认处理程序或对象本身可以保留 IStorage 指针。

给调用方的说明

通常调用执行以下操作的 OleLoad 帮助程序函数,而不是直接调用 IPersistStorage::Load
  1. 创建对象类的未初始化实例。
  2. 查询 IPersistStorage 接口的新实例。
  3. 调用 Load 以从现有存储初始化 对象。
调用 OleCreateFromData 函数或 OleCreateFromFile 函数以将对象插入复合文件中时,也会间接调用此方法, (如拖放或剪贴板粘贴操作) 。

容器应缓存 IPersistStorage 指针,以便在对象上的后续操作中使用。

实施者说明

实现应执行以下步骤来加载对象:
  1. 在存储对象中打开对象的流,并将必要的数据读取到对象的内部数据结构中。
  2. 清除对象的脏标志。
  3. 调用 AddRef 方法并缓存在存储指针中传递的 。
  4. 保持打开状态,并缓存指向对象将自身保存到此存储所需的任何流或存储的指针。
  5. 执行对象所需的任何其他默认初始化。
步骤 3 和 4 对于确保对象可以在内存不足的情况下保存自身尤其重要。 按住指向存储和流接口的指针可以保证此存储的保存操作不会因为内存不足而失败。

如果此方法的实现在初始化后收到对 IPersistStorage::InitNew 方法或 IPersistStorage::Load 方法的调用,则应返回CO_E_ALREADYINITIALIZED错误代码。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h

另请参阅

IPersistStorage

OleLoad