Funzione CompactVirtualDisk (virtdisk.h)
Riduce le dimensioni di un file di archivio di backup del disco rigido virtuale (VHD).
Sintassi
DWORD CompactVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] COMPACT_VIRTUAL_DISK_FLAG Flags,
[in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
Parametri
[in] VirtualDiskHandle
Handle per il disco virtuale aperto, che deve essere stato aperto usando il flag VIRTUAL_DISK_ACCESS_METAOPS nel parametro VirtualDiskAccessMask passato a OpenVirtualDisk. Per informazioni su come aprire un disco virtuale, vedere la funzione OpenVirtualDisk .
[in] Flags
Deve essere il valore COMPACT_VIRTUAL_DISK_FLAG_NONE (0) dell'enumerazione COMPACT_VIRTUAL_DISK_FLAG .
[in, optional] Parameters
Puntatore facoltativo a una struttura di COMPACT_VIRTUAL_DISK_PARAMETERS valida contenente i dati dei parametri di compattazione.
[in, optional] Overlapped
Puntatore facoltativo a una struttura OVERLAPPED valida se si desidera eseguire un'operazione asincrona .
Valore restituito
Stato della richiesta.
Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS.
Se la funzione ha esito negativo, il valore restituito è un codice di errore. Per altre informazioni, vedere Codici di errore di sistema.
Commenti
La compattazione può essere eseguita solo su un disco virtuale che è espandibile in modo dinamico o differenze.
Esistono due tipi diversi di compattazione.
- Il primo tipo, compattazione compatibile con il file system, usa il file system NTFS per determinare lo spazio libero. Questa operazione viene eseguita collegando il disco rigido virtuale come dispositivo di sola lettura includendo i flag VIRTUAL_DISK_ACCESS_METAOPS e VIRTUAL_DISK_ACCESS_ATTACH_RO nel parametro VirtualDiskAccessMask passato a OpenVirtualDisk, collegando il disco rigido virtuale chiamando AttachVirtualDisk e mentre il disco rigido virtuale è collegato chiamando CompactVirtualDisk. Lo scollegamento del disco rigido virtuale prima che venga eseguita la compattazione può causare un errore di compattazione prima che venga eseguita (simile all'annullamento della compattazione).
- Il secondo tipo, compattazione indipendente dal file system, non comporta il file system, ma cerca solo i blocchi VHD riempiti interamente con zeri (0). Questa operazione viene eseguita includendo il flag VIRTUAL_DISK_ACCESS_METAOPS nel parametro VirtualDiskAccessMask passato a OpenVirtualDisk e chiamando CompactVirtualDisk.
Un'operazione di compattazione su un disco virtuale può essere interrotta e rieseguita in un secondo momento. L'apertura di un file di disco virtuale interrotto può comportare la riduzione delle dimensioni di un file del disco virtuale al momento dell'apertura.
La compattazione può essere a elevato utilizzo di CPU e/o I/O, a seconda della dimensione del disco virtuale e del numero di blocchi che richiedono lo spostamento.
La funzione CompactVirtualDisk viene eseguita sul disco virtuale nello stesso contesto di sicurezza del chiamante.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 |
Server minimo supportato | Windows Server 2008 R2 |
Piattaforma di destinazione | Windows |
Intestazione | virtdisk.h |
Libreria | VirtDisk.lib |
DLL | VirtDisk.dll |