Condividi tramite


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.
La compattazione compatibile con il file system è il tipo di compattazione più efficiente, ma usando prima la compattazione compatibile con il file system seguita dalla compattazione indipendente dal file system produrrà il disco rigido virtuale più piccolo.

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

Vedi anche

Informazioni sul disco rigido virtuale

Informazioni di riferimento sul disco rigido virtuale