IRootStorage::SwitchToFile 方法 (objidl.h)

SwitchToFile 方法會將與儲存物件相關聯的目前檔案複製到新的檔案。 然後,新檔案會用於記憶體物件和任何未認可的變更。

語法

HRESULT SwitchToFile(
  LPOLESTR pszFile
);

參數

pszFile

Null 終止字串的指標,指定新檔案的檔名。 它不能是現有檔案的名稱。 如果 為 NULL,這個方法會建立具有唯一名稱的臨時檔,而且您可以呼叫 IStorage::Stat 來擷取暫存盤的名稱。

傳回值

這個方法可以傳回其中一個值。

傳回碼 描述
S_OK 已成功複製檔案。
STG_E_MEDIUMFULL 檔案未複製,因為儲存裝置的空間不足。
STG_E_ACCESSDENIED 檔案未複製,因為呼叫端沒有存取記憶體裝置的許可權。
STG_E_INVALIDPOINTER 檔案未複製,因為 pszFile 指標無效。
STG_E_FILEALREADYEXISTS 檔案未複製,因為新的檔名 (pszFile) 指向現有的檔案。

備註

IRootStorage::SwitchToFile 方法會複製與記憶體對象相關聯的檔案。 COM 容器會呼叫 SwitchToFile ,以在低記憶體情況下對檔案執行完整儲存。 一般而言,只有在正常、完整儲存 (作業之後才會完成,也就是儲存至暫存盤、刪除源檔、重新命名暫存盤) 失敗,併發生E_OUTOFMEMORY錯誤。

如果記憶體物件或其內含的任何專案已封送處理至另一個進程,則呼叫 SwitchToFile 方法是錯誤的。 呼叫 SwitchToFile 之前,容器必須針對載入或執行之記憶體物件內的任何元素呼叫 IPersistStorage::HandsOffStorage 方法。 HandsOffStorage 方法會強制元素釋放其儲存指標,並進入交握儲存模式。 容器也必須釋放此根記憶體中包含的數據流或記憶體的所有指標。 完成完整儲存作業之後,容器會將包含的專案傳回一般儲存模式。

實作者的注意事項

如果您要實作自己的記憶體物件, IRootStorage 方法 (包括 QueryInterfaceAddRefRelease) 不得耗用額外的記憶體或檔句柄。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidl.h
程式庫 Uuid.lib
Dll Ole32.dll

另請參閱

IPersistStorage::HandsOffStorage

IPersistStorage::SaveCompleted

IStorage::Commit

IStorage::Stat