IVdsOpenVDisk::Compact-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.]

Komprimiert den virtuellen Datenträger, um die physische Größe der Sicherungsdatei zu reduzieren.

Syntax

HRESULT Compact(
  [in]  COMPACT_VIRTUAL_DISK_FLAG Flags,
  [in]  ULONG                     Reserved,
  [out] IVdsAsync                 **ppAsync
);

Parameter

[in] Flags

Ein COMPACT_VIRTUAL_DISK_FLAG Enumerationswert, der angibt, wie der virtuelle Datenträger komprimiert werden soll. Muss auf COMPACT_VIRTUAL_DISK_FLAG_NONE festgelegt werden.

[in] Reserved

Dieser Parameter ist für die Systemverwendung reserviert.

[out] ppAsync

Ein Zeiger auf eine IVdsAsync-Schnittstelle , die nach erfolgreichem Abschluss die IVdsAsync-Schnittstelle empfängt, um diesen Vorgang zu überwachen und zu steuern. Aufrufer müssen die empfangene Schnittstelle freigeben, wenn sie damit fertig sind. Wenn die IVdsAsync::Wait-Methode für die Schnittstelle 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 BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.

Bemerkungen

Ein virtueller Datenträger kann nur komprimiert werden, wenn er sich in einem der folgenden Zustände befindet:

  • Getrennt (Offlinemodus)
  • Angefügt und geöffnet mit schreibgeschütztem Zugriff (Onlinemodus)
Wenn er sich in einem anderen Zustand befindet, schlägt der kompakten Vorgang fehl.

Der virtuelle Datenträger muss ein erweiterbarer (auch dynamischer) oder differenzierender virtueller Datenträger sein.

Der Vorgang kann sicher unterbrochen und später erneut ausgeführt werden. Wenn der Vorgang unterbrochen wird und die Sicherungsdatei erneut geöffnet wird, kann die Größe der Datei beim Öffnen der Datei reduziert werden.

Der Vorgang kann CPU-intensiv oder E/A-intensiv oder beides sein, je nachdem, wie groß der virtuelle Datenträger ist und wie viele nicht verwendete Blöcke eine Bearbeitung erfordern.

Diese Methode reduziert die Größe der Sicherungsspeicherdatei des virtuellen Datenträgers, indem nicht verwendeter Speicherplatz freigegeben wird. Wenn diese Methode für einen getrennten virtuellen Datenträger aufgerufen wird, kann sie nur Speicherplatz in der Datei freigeben, der nie zum Schreiben von Daten verwendet wurde. Wenn er für einen virtuellen Datenträger aufgerufen wird, der angefügt und mit schreibgeschütztem Zugriff geöffnet wird, kann er Speicherplatz freigeben, der einmal verwendet, aber später freigegeben wurde. Durch das Aufrufen dieser Methode für einen virtuellen Datenträger, der mit schreibgeschütztem Zugriff angefügt und geöffnet wird, wird der maximale freie Speicherplatz in der Sicherungsspeicherdatei freigegeben.

Anforderungen

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

Weitere Informationen

IVdsOpenVDisk