Freigeben über


IVdsVolumeShrink::Shrink-Methode (vds.h)

[Ab Windows 8 und Windows Server 2012 wird die COM-Schnittstelle des Virtuellen Datenträgerdiensts durch die Windows Storage Management-API ersetzt.]

Verkleinert das Volume und alle Plexes und gibt die freigegebenen Erweiterungen zurück.

Syntax

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

Parameter

[in] ullDesiredNumberOfReclaimableBytes

Maximale Anzahl von Bytes, um die Größe des Volumes zu verkleinern. Der Wert dieses Parameters muss größer oder gleich dem Wert des ullMinNumberOfReclaimableBytes-Parameters sein. Wenn die angegebene Anzahl von Bytes kein Vielfaches der Dateisystemclustergröße ist, rundet die Shrink-Methode diesen Wert auf das nächste Vielfache der Dateisystemclustergröße auf.

[in] ullMinNumberOfReclaimableBytes

Minimale Anzahl von Bytes, um die Größe des Volumes zu verkleinern. Wenn die Volumegröße nicht um mindestens diese Anzahl von Bytes verkleinern kann, schlägt die Shrink-Methode fehl. Wenn die angegebene Anzahl von Bytes kein Vielfaches der Dateisystemclustergröße ist, rundet die Shrink-Methode diesen Wert auf das nächste Vielfache der Dateisystemclustergröße auf. Geben Sie null an, um anzugeben, dass keine Mindestanzahl von wiederzugebenden Bytes erforderlich ist, damit die Shrink-Methode erfolgreich ist.

[out] ppAsync

Die Adresse eines IVdsAsync-Schnittstellenzeigers . VDS initialisiert die Schnittstelle bei der Rückgabe. Aufrufer müssen die Schnittstelle freigeben. Verwenden Sie diese Schnittstelle, um den status des Vorgangs abzubrechen, abzuwarten oder abzufragen. Wenn IVdsAsync::Wait aufgerufen und ein erfolgreicher HRESULT-Wert zurückgegeben wird, müssen die in der VDS_ASYNC_OUTPUT-Struktur zurückgegebenen Schnittstellen durch Aufrufen der IUnknown::Release-Methode für jeden Schnittstellenzeiger freigegeben werden. Wenn Wait jedoch einen Fehler-HRESULT-Wert zurückgibt oder wenn der pHrResult-Parameter von Wait einen Fehler-HRESULT-Wert empfängt, sind die Schnittstellenzeiger in der VDS_ASYNC_OUTPUT Struktur NULL und müssen nicht freigegeben werden. Sie können mit den in Winerror.h definierten Makros SUCCEEDED und FAILED auf Erfolg oder Fehler HRESULT-Werte testen.

Rückgabewert

Diese Methode kann HRESULT-Standardwerte wie E_INVALIDARG oder E_OUTOFMEMORY und VDS-spezifische Rückgabewerte zurückgeben. Es kann auch konvertierte Systemfehlercodes mithilfe des HRESULT_FROM_WIN32-Makros zurückgeben. Fehler können vom VDS selbst oder vom zugrunde liegenden VDS-Anbieter stammen, der verwendet wird. Folgende Rückgabewerte sind möglich.

Rückgabecode/-wert BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
VDS_E_CANNOT_SHRINK
0x8004251EL
Das Volume kann nicht verkleinert werden, da es vom Dateisystem nicht unterstützt wird.
VDS_E_DISK_REMOVEABLE
0x8004255AL
Der Vorgang wird auf Wechselmedien nicht unterstützt.
VDS_E_INTERNAL_ERROR
0x80042448L
Interner Fehler. Weitere Informationen finden Sie im Ereignisprotokoll.
VDS_S_NO_NOTIFICATION
0x00042517L
Es wurde keine Volume-Ankunftsbenachrichtigung empfangen. Möglicherweise müssen Sie IVdsService::Refresh aufrufen.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
Die angegebene Verkleinerungsgröße ist zu groß und führt dazu, dass das Volume kleiner als die Mindestvolumegröße ist.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
Die angegebene Verkleinerungsgröße ist kleiner als die zulässige Mindestgröße.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
Das Volume ist nicht fehlerfrei.
VDS_E_VOLUME_SIMPLE_SPANNED
0x80042589L
Der Vorgang wird nur für einfache oder übergreifende Volumes unterstützt.

Hinweise

Die Shrink-Methode verschiebt die Dateien so, dass sie sich so nahe wie möglich am Anfang des Volumes befinden, um freien Speicherplatz am Ende des Volumes zu konsolidieren. (Die Menge des freien Speicherplatzes, der am Ende des Volumes konsolidiert werden kann, bestimmt, wie viel das Volume verkleinern kann.) Anschließend wird das Dateisystemvolume gekürzt, dessen Größe reduziert und dann die Partition oder das dynamische Volume abgeschnitten.

In fast allen Fällen gibt es einige Dateien, die unbeweglich sind (d. a. Dateien, die nicht verschoben werden können). Zum Beispiel sind Dateisystem- und Speichertreibermetadatendateien wahrscheinlich unveränderlich. Aus diesem Grund ist der Betrag, um den ein Volume verkleinerbar ist, in der Regel kleiner als die Gesamtmenge des freien Speicherplatzes auf dem Volume.

Die Anzahl und Platzierung von unbeweglichen Dateien kann von Einem Computer zum nächsten variieren, auch wenn beide Computer identisch konfiguriert sind.

Es ist möglich, dass eine Datei vorübergehend unbeweglich ist. Aus diesem Grund kann eine Anwendung zusätzlichen Speicherplatz wiederherstellen, wenn sie diese Methode ein zweites Mal mit denselben Parametern aufruft.

Wenn die Parameter ullDesiredNumberOfReclaimableBytes und ullMinNumberOfReclaimableBytes beide null sind, verkleinert die Shrink-Methode das Volume so weit wie möglich.

Verkleinern und Erweitern von Vorgängen werden nur auf NTFS- und RAW-Volumes unterstützt.

Verwenden Sie diese Methode, um das Dateisystem und das Volume zu verkleinern. Wenn VDS das Volume nicht verkleinern kann, wird der Vorgang beendet, ohne das Dateisystem zu verkleinern.

Auf jedem Volume kann jeweils nur ein Verkleiner- oder Defragmentierungsvorgang ausgeführt werden. Windows Server 2008 und Windows Vista: Auf einem Computer kann jeweils nur ein Verkleiner- oder Defragmentierungsvorgang ausgeführt werden.

Implementer müssen einen Zeiger auf die IVdsAsync-Schnittstelle für diese Methode zurückgeben, auch wenn der Aufruf keinen asynchronen Vorgang initiiert.

Diese Methode ist mit der IVdsVolume::Shrink-Methode identisch.

Sie können die IVdsVolumeShrink::QueryMaxReclaimableBytes-Methode verwenden, um die Anzahl der Bytes zu schätzen, die durch den Verkleinerungsvorgang zurückgewonnen werden sollen. QueryMaxReclaimableBytes kann jedoch mehr Bytes zurückgeben, als tatsächlich verfügbar sind.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile vds.h
Bibliothek Uuid.lib

Weitere Informationen

IVdsVolume::Extend

IVdsVolumeShrink