IStorage::MoveElementTo 方法 (objidl.h)

MoveElementTo 方法會將子記憶體或數據流從這個儲存物件複製到另一個儲存物件。

語法

HRESULT MoveElementTo(
  [in] const OLECHAR *pwcsName,
  [in] IStorage      *pstgDest,
  [in] const OLECHAR *pwcsNewName,
  [in] DWORD         grfFlags
);

參數

[in] pwcsName

寬字元 Null 終止的 Unicode 字串指標,其中包含要移動或複製之儲存物件中的項目名稱。

[in] pstgDest

目的地記憶體物件的 IStorage 指標。

[in] pwcsNewName

寬字元 Null 終止 Unicode 字串的指標,其中包含新儲存物件中專案的新名稱。

[in] grfFlags

指定作業應該是移動 (STGMOVE_MOVE) 還是複製 (STGMOVE_COPY) 。 請參閱 STGMOVE 列舉。

傳回值

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

傳回碼 描述
S_OK 已成功複製或行動記憶體物件。
E_PENDING 僅限異步記憶體:目前無法使用部分或所有元素的數據。
STG_E_ACCESSDENIED 目的地儲存對像是來源儲存物件的子系。 或者,目的地物件和專案名稱與來源物件和專案名稱相同。 換句話說,您無法將元素移到本身。
STG_E_FILENOTFOUND 具有指定名稱的專案不存在。
STG_E_FILEALREADYEXISTS 指定的檔案已經存在。
STG_E_INSUFFICIENTMEMORY 複製或移動因記憶體不足而未完成。
STG_E_INVALIDFLAG grfFlags 參數的值無效。
STG_E_INVALIDNAME 不是 pwcsName 的有效值。
STG_E_INVALIDPOINTER 為儲存物件指定的指標無效。
STG_E_INVALIDPARAMETER 其中一個參數無效。
STG_E_REVERTED 記憶體物件已因交易樹狀結構中上方的還原作業而失效。
STG_E_TOOMANYOPENFILES 複製或移動未完成,因為有太多開啟的檔案。

備註

IStorage::MoveElementTo 方法通常與叫用指定元素上的 IStorage::CopyTo 方法相同,然後移除來源元素。 在此情況下, MoveElementTo 方法只會使用目的地儲存物件的公開可用函式來執行移動。

例如,如果來源和目的地儲存物件對彼此的實作有特殊知識, (它們可能會是相同實作的不同實例) ,則可以更有效率地實作此方法。

呼叫這個方法之前,必須關閉要移動的專案,而且目的地記憶體必須開啟。 此外,目的地物件和元素不能與移動來源相同的儲存物件/元素名稱。 也就是說,您無法將元素移至本身。

規格需求

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

另請參閱

IStorage - 複合檔案實作

IStorage::CopyTo

STGMOVE