CompactVirtualDisk-Funktion (virtdisk.h)
Reduziert die Größe einer VHD-Sicherungsspeicherdatei (Virtual Hard Disk).
Syntax
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
Ein Handle für den geöffneten virtuellen Datenträger, der mit dem VIRTUAL_DISK_ACCESS_METAOPS-Flag im VirtualDiskAccessMask-Parameter geöffnet worden sein muss, der an OpenVirtualDisk übergeben wurde. Informationen zum Öffnen eines virtuellen Datenträgers finden Sie in der OpenVirtualDisk-Funktion .
[in] Flags
Muss der COMPACT_VIRTUAL_DISK_FLAG_NONE Wert (0) der COMPACT_VIRTUAL_DISK_FLAG-Enumeration sein.
[in, optional] Parameters
Ein optionaler Zeiger auf eine gültige COMPACT_VIRTUAL_DISK_PARAMETERS-Struktur , die Komprimierungsparameterdaten enthält.
[in, optional] Overlapped
Ein optionaler Zeiger auf eine gültige OVERLAPPED-Struktur , wenn ein asynchroner Vorgang gewünscht wird.
Rückgabewert
Status der Anforderung.
Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.
Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Fehlercode. Weitere Informationen finden Sie unter Systemfehlercodes.
Hinweise
Die Komprimierung kann nur auf einem virtuellen Datenträger ausgeführt werden, der dynamisch erweiterbar oder differenziert ist.
Es gibt zwei verschiedene Arten der Komprimierung.
- Der erste Typ, die dateisystemfähige Komprimierung, verwendet das NTFS-Dateisystem, um freien Speicherplatz zu bestimmen. Dazu wird die VHD als schreibgeschütztes Gerät angefügt, indem die VIRTUAL_DISK_ACCESS_METAOPS- und VIRTUAL_DISK_ACCESS_ATTACH_RO-Flags in den an OpenVirtualDisk übergebenen VirtualDiskAccessMask-Parameter eingeschlossen werden, die VHD durch Aufrufen von AttachVirtualDisk angefügt wird, und während die VHD angefügt ist, indem CompactVirtualDisk aufgerufen wird. Das Trennen der VHD vor der Komprimierung kann dazu führen, dass die Komprimierung einen Fehler zurückgibt, bevor sie durchgeführt wird (ähnlich wie beim Abbruch der Komprimierung).
- Der zweite Typ, dateisystemunabhängige Komprimierung, umfasst nicht das Dateisystem, sondern sucht nur nach VHD-Blöcken, die vollständig mit Nullen (0) gefüllt sind. Dazu fügen Sie das flag VIRTUAL_DISK_ACCESS_METAOPS in den An OpenVirtualDisk übergebenen VirtualDiskAccessMask-Parameter ein und rufen CompactVirtualDisk auf.
Ein Komprimierungsvorgang auf einem virtuellen Datenträger kann sicher unterbrochen und später erneut ausgeführt werden. Das erneute Öffnen einer datei eines virtuellen Datenträgers, die unterbrochen wurde, kann zum Zeitpunkt des Öffnens zu einer Verringerung der Größe einer virtuellen Datenträgerdatei führen.
Die Komprimierung kann CPU-intensiv und/oder E/A-intensiv sein, je nachdem, wie groß der virtuelle Datenträger ist und wie viele Blöcke Verschiebungen erfordern.
Die CompactVirtualDisk-Funktion wird auf dem virtuellen Datenträger im gleichen Sicherheitskontext wie der Aufrufer ausgeführt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 |
Zielplattform | Windows |
Kopfzeile | virtdisk.h |
Bibliothek | VirtDisk.lib |
DLL | VirtDisk.dll |