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