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 方法 (包括 QueryInterface、 AddRef 和 Release) 不得耗用額外的記憶體或檔句柄。規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows 2000 Server [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | objidl.h |
程式庫 | Uuid.lib |
Dll | Ole32.dll |
另請參閱
IPersistStorage::HandsOffStorage