Bagikan melalui


Fungsi MergeVirtualDisk (virtdisk.h)

Menggabungkan hard disk virtual anak (VHD) dalam rantai yang berbeda dengan satu atau beberapa disk virtual induk dalam rantai.

Sintaks

DWORD MergeVirtualDisk(
  [in]           HANDLE                         VirtualDiskHandle,
  [in]           MERGE_VIRTUAL_DISK_FLAG        Flags,
  [in]           PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                   Overlapped
);

Parameter

[in] VirtualDiskHandle

Handel ke disk virtual terbuka, yang harus dibuka menggunakan bendera VIRTUAL_DISK_ACCESS_METAOPS . Untuk informasi tentang cara membuka disk virtual, lihat fungsi OpenVirtualDisk .

[in] Flags

Harus berupa nilai MERGE_VIRTUAL_DISK_FLAG_NONE dari enumerasi MERGE_VIRTUAL_DISK_FLAG .

[in] Parameters

Penunjuk ke struktur MERGE_VIRTUAL_DISK_PARAMETERS yang valid yang berisi data parameter gabungan.

[in, optional] Overlapped

Penunjuk opsional ke struktur TUMPANG TINDIH yang valid jika operasi asinkron diinginkan.

Menampilkan nilai

Status permintaan.

Jika fungsi berhasil, nilai yang dikembalikan adalah ERROR_SUCCESS.

Jika fungsi gagal, nilai yang dikembalikan adalah kode kesalahan. Untuk informasi selengkapnya, lihat Kode Kesalahan Sistem.

Keterangan

Catatan Semua kemunculan istilah disk di bagian ini mengacu pada disk virtual. Istilah penyimpanan backing mengacu pada penyimpanan disk fisik tempat file atau file gambar VHD berada.
 
Fungsi MergeVirtualDisk memperbarui semua blok data dalam satu atau beberapa disk induk dengan blok data dari disk anak yang dirujuk oleh parameter VirtualDiskHandle . Ini pada dasarnya adalah operasi penyalinan.

Menggabungkan disk mengharuskan disk yang terpengaruh dicopot selama operasi.

Pemanggil harus memiliki READ|AKSES TULIS ke penyimpanan backing untuk disk yang terpengaruh.

RWDepth disk harus lebih besar dari kedalaman penggabungan yang ditentukan oleh OPEN_VIRTUAL_DISK_PARAMETERS.

Penggabungan memodifikasi disk induk yang digabungkan, oleh karena itu disk lain yang berbeda tergantung pada induk tersebut tidak akan valid lagi.

Disk induk yang digabungkan diubah untuk mewakili data yang sama seperti yang ditahan di disk yang membedakan anak tempat penggabungan dilakukan.

Setiap data yang sudah ada sebelumnya dalam disk induk yang digabungkan akan ditimpa.

Jika operasi penggabungan terganggu, disk anak masih dapat digunakan. Fungsi MergeVirtualDisk dapat dijalankan ulang untuk menyelesaikan penggabungan.

Kedalaman permintaan penggabungan adalah jumlah file gambar VHD induk dalam rantai yang berbeda untuk digabungkan. Misalnya, jika anggota MergeDepth memiliki nilai 1, blok data dari disk perbedaan yang ditentukan dipindahkan ke induknya. Jika anggota MergeDepth memiliki nilai 2 dan induk disk yang berbeda yang ditentukan juga merupakan disk yang berbeda (artinya ada disk ketiga dalam rantai), maka blok data dari disk pertama dan kedua dipindahkan ke disk ketiga (dengan blok dari disk pertama yang lebih diutamakan daripada blok dari yang kedua selama operasi akhir).

Setelah selesai, disk anak yang terpengaruh tidak lagi dianggap valid, dan operasi di masa mendatang akan memiliki hasil yang tidak didukung. Dalam contoh sebelumnya, setelah berhasil menyelesaikan penggabungan, disk ketiga valid dan yang pertama dan kedua tidak. Fungsi MergeVirtualDisk tidak akan menghapus disk apa pun yang tidak valid, atau melakukan koneksi ulang hubungan perbedaan otomatis. Ini harus dilakukan secara eksplisit oleh pemanggil.

Jika operasi penggabungan dilakukan pada simpul nonleaf dari disk yang berbeda, pemanggil bertanggung jawab untuk memperbaiki informasi induk untuk simpul anak dari disk yang sedang digabungkan.

Persyaratan

   
Klien minimum yang didukung Windows 7
Server minimum yang didukung Windows Server 2008 R2
Target Platform Windows
Header virtdisk.h
Pustaka VirtDisk.lib
DLL VirtDisk.dll

Lihat juga

Tentang VHD

Referensi VHD