Bagikan melalui


Fungsi CompactVirtualDisk (virtdisk.h)

Mengurangi ukuran file penyimpanan cadangan hard disk virtual (VHD).

Sintaks

DWORD CompactVirtualDisk(
  [in]           HANDLE                           VirtualDiskHandle,
  [in]           COMPACT_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] PCOMPACT_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 di parameter VirtualDiskAccessMask yang diteruskan ke OpenVirtualDisk. Untuk informasi tentang cara membuka disk virtual, lihat fungsi OpenVirtualDisk .

[in] Flags

Harus berupa nilai COMPACT_VIRTUAL_DISK_FLAG_NONE (0) dari enumerasi COMPACT_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Penunjuk opsional ke struktur COMPACT_VIRTUAL_DISK_PARAMETERS valid yang berisi data parameter pemadatan.

[in, optional] Overlapped

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

Nilai kembali

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

Pemadatan hanya dapat dijalankan pada disk virtual yang dapat diperluas atau berbeda secara dinamis.

Ada dua jenis pemadatan yang berbeda.

  • Jenis pertama, pemadatan yang sadar sistem file, menggunakan sistem file NTFS untuk menentukan ruang kosong. Ini dilakukan dengan melampirkan VHD sebagai perangkat baca-saja dengan menyertakan bendera VIRTUAL_DISK_ACCESS_METAOPS dan VIRTUAL_DISK_ACCESS_ATTACH_RO dalam parameter VirtualDiskAccessMask yang diteruskan ke OpenVirtualDisk, melampirkan VHD dengan memanggil AttachVirtualDisk, dan saat VHD dilampirkan memanggil CompactVirtualDisk. Melepaskan VHD sebelum pemadatan dilakukan dapat menyebabkan pemadatan mengembalikan kegagalan sebelum dilakukan (mirip dengan pembatalan pemadatan).
  • Jenis kedua, pemadatan file-system-agnostic, tidak melibatkan sistem file tetapi hanya mencari blok VHD yang diisi sepenuhnya dengan nol (0). Ini dilakukan dengan menyertakan bendera VIRTUAL_DISK_ACCESS_METAOPS dalam parameter VirtualDiskAccessMask yang diteruskan ke OpenVirtualDisk, dan memanggil CompactVirtualDisk.
Pemadatan yang sadar sistem file adalah jenis pemadatan yang paling efisien tetapi menggunakan pemadatan yang sadar sistem file terlebih dahulu diikuti dengan pemadatan file-system-agnostic akan menghasilkan VHD terkecil.

Operasi pemadatan pada disk virtual dapat dengan aman terganggu dan dijalankan kembali nanti. Membuka kembali file disk virtual yang telah terganggu dapat mengakibatkan pengurangan ukuran file disk virtual pada saat pembukaan.

Pemadatan dapat intensif CPU dan/atau intensif I/O, tergantung pada seberapa besar disk virtual dan berapa banyak blok yang memerlukan pergerakan.

Fungsi CompactVirtualDisk berjalan pada disk virtual dalam konteks keamanan yang sama dengan pemanggil.

Persyaratan

Persyaratan Nilai
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