Bagikan melalui


Metode IVdsVolumeShrink::Shrink (vds.h)

[Dimulai dengan Windows 8 dan Windows Server 2012, antarmuka COM Layanan Disk Virtual digantikan oleh WINDOWS Storage Management API.]

Menyusutkan volume dan semua pleks dan mengembalikan jangkauan yang dirilis.

Sintaks

HRESULT Shrink(
  [in]  ULONGLONG ullDesiredNumberOfReclaimableBytes,
  [in]  ULONGLONG ullMinNumberOfReclaimableBytes,
  [out] IVdsAsync **ppAsync
);

Parameter

[in] ullDesiredNumberOfReclaimableBytes

Jumlah maksimum byte untuk menyusutkan ukuran volume. Nilai parameter ini harus lebih besar dari atau sama dengan nilai parameter ullMinNumberOfReclaimableBytes . Jika jumlah byte yang ditentukan bukan kelipatan ukuran kluster sistem file, metode Susutkan akan membulatkan nilai ini hingga kelipatan ukuran kluster sistem file berikutnya.

[in] ullMinNumberOfReclaimableBytes

Jumlah minimum byte untuk menyusutkan ukuran volume. Jika ukuran volume tidak dapat disusutkan setidaknya dengan jumlah byte ini, metode Penyusutan gagal. Jika jumlah byte yang ditentukan bukan kelipatan ukuran kluster sistem file, metode Susutkan akan membulatkan nilai ini hingga kelipatan ukuran kluster sistem file berikutnya. Tentukan nol untuk menunjukkan bahwa tidak ada jumlah minimum byte yang dapat diklaim kembali yang diperlukan agar metode Susutkan berhasil.

[out] ppAsync

Alamat penunjuk antarmuka IVdsAsync . VDS menginisialisasi antarmuka yang dikembalikan. Penelepon harus merilis antarmuka. Gunakan antarmuka ini untuk membatalkan, menunggu, atau mengkueri status operasi. Jika IVdsAsync::Wait dipanggil dan nilai HRESULT berhasil dikembalikan, antarmuka yang dikembalikan dalam struktur VDS_ASYNC_OUTPUT harus dirilis dengan memanggil metode IUnknown::Release pada setiap penunjuk antarmuka. Namun, jika Wait mengembalikan nilai HRESULT kegagalan, atau jika parameter pHrResultWait menerima nilai HRESULT kegagalan, penunjuk antarmuka dalam struktur VDS_ASYNC_OUTPUT adalah NULL dan tidak perlu dirilis. Anda dapat menguji keberhasilan atau kegagalan nilai HRESULT dengan menggunakan makro BERHASIL dan GAGAL yang ditentukan dalam Winerror.h.

Nilai kembali

Metode ini dapat mengembalikan nilai HRESULT standar, seperti E_INVALIDARG atau E_OUTOFMEMORY, dan nilai pengembalian khusus VDS. Ini juga dapat mengembalikan kode kesalahan sistem yang dikonversi menggunakan makro HRESULT_FROM_WIN32 . Kesalahan dapat berasal dari VDS itu sendiri atau dari penyedia VDS yang mendasar yang sedang digunakan. Kemungkinan nilai yang dikembalikan termasuk yang berikut ini.

Mengembalikan kode/nilai Deskripsi
S_OK
Metode berhasil diselesaikan.
VDS_E_CANNOT_SHRINK
0x8004251EL
Volume tidak dapat disusutkan karena sistem file tidak mendukungnya.
VDS_E_DISK_REMOVEABLE
0x8004255AL
Operasi ini tidak didukung pada media yang bisa dilepas.
VDS_E_INTERNAL_ERROR
0x80042448L
Terjadi kesalahan internal. Periksa log peristiwa untuk detail selengkapnya.
VDS_S_NO_NOTIFICATION
0x00042517L
Tidak ada pemberitahuan kedatangan volume yang diterima. Anda mungkin perlu memanggil IVdsService::Refresh.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
Ukuran penyusutan yang ditentukan terlalu besar dan akan menyebabkan volume lebih kecil dari ukuran volume minimum.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
Ukuran penyusutan yang ditentukan kurang dari ukuran penyusutan minimum yang diizinkan.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
Volumenya tidak sehat.
VDS_E_VOLUME_SIMPLE_SPANNED
0x80042589L
Operasi ini hanya didukung pada volume sederhana atau diperluas.

Keterangan

Metode Penyusutan memindahkan file sehingga sedekat mungkin dengan awal volume, untuk mengonsolidasikan ruang kosong di akhir volume. (Jumlah ruang kosong yang dapat dikonsolidasikan pada akhir volume menentukan berapa banyak volume yang dapat disusutkan.) Kemudian memotong volume sistem file, mengurangi ukurannya, dan kemudian memotong partisi atau volume dinamis.

Dalam hampir semua kasus, akan ada beberapa file yang tidak dapat digerakkan (yaitu, file yang tidak dapat dipindahkan). Misalnya, sistem file dan file metadata driver penyimpanan cenderung tidak dapat dimigrasikan. Untuk alasan ini, jumlah di mana volume dapat disusutkan biasanya kurang dari jumlah total ruang kosong pada volume.

Jumlah dan penempatan file immovable dapat bervariasi dari satu komputer ke komputer berikutnya, bahkan jika kedua komputer dikonfigurasi secara identik.

Dimungkinkan bagi file untuk sementara waktu tidak dapat dimigrasikan. Untuk alasan ini, aplikasi mungkin dapat memulihkan ruang tambahan jika memanggil metode ini untuk kedua kalinya dengan parameter yang sama.

Jika parameter ullDesiredNumberOfReclaimableBytes dan ullMinNumberOfReclaimableBytes sama-sama nol, metode Penyusutan akan menyusutkan volume sebanyak mungkin.

Operasi penyusutan dan perluasan hanya didukung pada volume NTFS dan RAW.

Gunakan metode ini untuk menyusutkan sistem dan volume file. Jika VDS gagal menyusutkan volume, VDS akan menghentikan operasi tanpa menyusutkan sistem file.

Hanya satu operasi penyusutan atau defragmentasi yang dapat dilakukan pada satu waktu pada setiap volume. Windows Server 2008 dan Windows Vista: Hanya satu operasi penyusutan atau defragmentasi yang dapat dilakukan pada satu waktu pada komputer.

Pelaksana harus mengembalikan pointer ke antarmuka IVdsAsync untuk metode ini, bahkan jika panggilan tidak memulai operasi asinkron.

Metode ini identik dengan metode IVdsVolume::Shrink .

Anda dapat menggunakan metode IVdsVolumeShrink::QueryMaxReclaimableBytes untuk memperkirakan jumlah byte yang akan diklaim kembali oleh operasi penyusutan. Namun, QueryMaxReclaimableBytes dapat mengembalikan lebih banyak byte daripada yang sebenarnya tersedia.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header vds.h
Pustaka Uuid.lib

Lihat juga

IVdsVolume::Extend

IVdsVolumeShrink