Metode IStorage::CopyTo (objidl.h)
Metode CopyTo menyalin seluruh konten objek penyimpanan terbuka ke objek penyimpanan lain.
Sintaks
HRESULT CopyTo(
[in] DWORD ciidExclude,
[in] const IID *rgiidExclude,
[in] SNB snbExclude,
[in] IStorage *pstgDest
);
Parameter
[in] ciidExclude
Jumlah elemen dalam array yang ditunjukkan oleh rgiidExclude. Jika rgiidExcludeADALAH NULL, maka ciidExclude diabaikan.
[in] rgiidExclude
Array pengidentifikasi antarmuka (IID) yang diketahui pemanggil dan tidak ingin disalin atau bahwa objek penyimpanan tidak mendukung, tetapi yang statusnya penelepon nantinya akan secara eksplisit menyalin. Array dapat mencakup IStorage, yang menunjukkan bahwa hanya objek stream yang akan disalin, dan IStream, yang menunjukkan bahwa hanya objek penyimpanan yang akan disalin. Panjang array nol menunjukkan bahwa hanya status yang diekspos oleh objek IStorage yang akan disalin; semua antarmuka lain pada objek akan diabaikan. Melewati NULL menunjukkan bahwa semua antarmuka pada objek akan disalin.
[in] snbExclude
Blok nama string (lihat SNB) yang menentukan blok penyimpanan atau objek stream yang tidak akan disalin ke tujuan. Elemen-elemen ini tidak dibuat di tujuan. Jika IID_IStorage berada dalam array rgiidExclude , parameter ini diabaikan. Parameter ini mungkin NULL.
[in] pstgDest
Penunjuk ke objek penyimpanan terbuka tempat objek penyimpanan ini akan disalin. Objek penyimpanan tujuan dapat menjadi implementasi yang berbeda dari antarmuka IStorage dari objek penyimpanan sumber. Dengan demikian, IStorage::CopyTo hanya dapat menggunakan metode yang tersedia untuk umum dari objek penyimpanan tujuan. Jika pstgDest terbuka dalam mode bertransaksi, pstgDest dapat dikembalikan dengan memanggil metode IStorage::Revert-nya .
Nilai kembali
Metode ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
S_OK | Objek penyimpanan berhasil disalin. |
E_PENDING | Hanya Penyimpanan Asinkron: Bagian atau semua data yang akan disalin saat ini tidak tersedia. |
STG_E_ACCESSDENIED | Objek penyimpanan tujuan adalah anak dari objek penyimpanan sumber. |
STG_E_INSUFFICIENTMEMORY | Salinan tidak selesai karena kurangnya memori. |
STG_E_INVALIDPOINTER | Penunjuk yang ditentukan untuk objek penyimpanan tidak valid. |
STG_E_INVALIDPARAMETER | Salah satu parameter tidak valid. |
STG_E_TOOMANYOPENFILES | Salinan tidak selesai karena terlalu banyak file yang terbuka. |
STG_E_REVERTED | Objek penyimpanan telah dibatalkan oleh operasi kembali di atasnya di pohon transaksi. |
STG_E_MEDIUMFULL | Salinan tidak selesai karena media penyimpanan penuh. |
Keterangan
Metode ini menggabungkan elemen yang terkandung dalam objek penyimpanan sumber dengan yang sudah ada di tujuan. Tata letak objek penyimpanan tujuan mungkin berbeda dari objek penyimpanan sumber.
Proses penyalinan rekursif, memanggil IStorage::CopyTo dan IStream::CopyTo pada elemen yang disarangkan di dalam sumber.
Saat menyalin aliran di atas aliran yang ada dengan nama yang sama, aliran yang ada terlebih dahulu dihapus lalu diganti dengan aliran sumber. Saat menyalin penyimpanan di atas penyimpanan yang ada dengan nama yang sama, penyimpanan yang ada tidak dihapus. Akibatnya, setelah operasi salin, IStorage tujuan berisi elemen yang lebih lama, kecuali jika digantikan oleh yang lebih baru dengan nama yang sama.
Objek penyimpanan dapat mengekspos antarmuka selain IStorage, termasuk IRootStorage, IPropertyStorage, atau IPropertySetStorage. Parameter rgiidExclude mengizinkan pengecualian salah satu atau semua antarmuka tambahan ini dari operasi salin.
Penelepon dengan salinan yang lebih baru atau lebih efisien dari substorase atau objek stream yang ada mungkin ingin mengecualikan versi objek ini saat ini dari operasi salin. Parameter snbExclude dan rgiidExclude menyediakan dua cara untuk mengecualikan objek penyimpanan yang ada penyimpanan atau aliran.
Catatan untuk Penelepon
Cara paling umum untuk menggunakan metode IStorage::CopyTo adalah menyalin semuanya dari sumber ke tujuan, seperti dalam sebagian besar operasi simpan dan simpan sebagai penuh.Contoh kode berikut menunjukkan cara menyalin semuanya dari objek penyimpanan sumber ke objek penyimpanan tujuan.
pstg->CopyTo(0, Null, Null, pstgDest)
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows 2000 Server [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | objidl.h |
Pustaka | Uuid.lib |
DLL | Ole32.dll |