Freigeben über


IVdsVolume::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 abgelöst.]

Reduziert die Größe des Volumes und aller Plexes und gibt die freigegebenen Blöcke in freien Speicherplatz zurück.

Syntax

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

Parameter

[in] ullNumberOfBytesToRemove

Die Größe der Reduzierung in Bytes.

[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 die status des Vorgangs abzubrechen, abzuwarten oder abzufragen. Wenn IVdsAsync::Wait aufgerufen wird 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 HRESULT-Fehlerwert zurückgibt oder der pHrResult-Parameter von Wait einen HRESULT-Fehlerwert empfängt, sind die Schnittstellenzeiger in der VDS_ASYNC_OUTPUT-StrukturNULL und müssen nicht freigegeben werden. Sie können HRESULT-Werte für Erfolg oder Fehler testen, indem Sie die in Winerror.h definierten Makros SUCCEEDED und FAILED verwenden.

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 makros HRESULT_FROM_WIN32 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_PROVIDER_CACHE_CORRUPT
0x8004241FL
Der Cache des Anbieters ist beschädigt. Dies weist auf ein Software- oder Kommunikationsproblem innerhalb eines Anbieters hin, der Informationen zu den angefügten Geräten zwischenspeichert. Der Aufrufer kann die IVdsHwProvider::Reenumerate-Methode gefolgt von der IVdsHwProvider::Refresh-Methode verwenden, um den Cache wiederherzustellen.
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_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
Die angegebene Verkleinerungsgröße ist kleiner als die mindest zulässige Verkleinerungsgröße.
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.

Hinweise

Diese Methode ist ein Wrapper für die IVdsVolumeShrink::Shrink-Methode . Wenn Sie IVdsVolume::Shrink aufrufen, wird der Wert des uNumberOfBytesToRemove-Parameters für die Parameter ullDesiredNumberOfReclaimableBytes und ullMinNumberOfReclaimableBytes von IVdsVolumeShrink::Shrink verwendet.

Verkleinerungs- und Erweiterungsvorgänge 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 Verkleinerungs- oder Defragmentierungsvorgang ausgeführt werden. Windows Server 2008 und Windows Vista: Auf einem Computer kann jeweils nur ein Verkleinerungs- oder Defragmentierungsvorgang ausgeführt werden.

Wenn uNumberOfBytesToRemove null ist, schlägt die Methode fehl. Andernfalls rundet VDS uNumberOfBytesToRemove auf ein Vielfaches der Dateisystemclustergröße.

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

Sie können die IVdsVolumeShrink::QueryMaxReclaimableBytes-Methode verwenden, um die Anzahl der Bytes zu schätzen, die durch den Verkleinerungsvorgang zurückgefordert 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

IVdsAsync

IVdsVolume

IVdsVolume::Extend