Partager via


Fonction CompactVirtualDisk (virtdisk.h)

Réduit la taille d’un fichier de stockage de stockage de disque dur virtuel (VHD).

Syntaxe

DWORD CompactVirtualDisk(
  [in]           HANDLE                           VirtualDiskHandle,
  [in]           COMPACT_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                     Overlapped
);

Paramètres

[in] VirtualDiskHandle

Handle du disque virtuel ouvert, qui doit avoir été ouvert à l’aide de l’indicateur VIRTUAL_DISK_ACCESS_METAOPS dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk. Pour plus d’informations sur l’ouverture d’un disque virtuel, consultez la fonction OpenVirtualDisk .

[in] Flags

Doit être la valeur COMPACT_VIRTUAL_DISK_FLAG_NONE (0) de l’énumération COMPACT_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Pointeur facultatif vers une structure COMPACT_VIRTUAL_DISK_PARAMETERS valide qui contient des données de paramètres de compactage.

[in, optional] Overlapped

Pointeur facultatif vers une structure CHEVAUCHEMENT VALIDE si une opération asynchrone est souhaitée.

Valeur retournée

Statut de la demande.

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour est un code d’erreur. Pour plus d’informations, consultez Codes d’erreur système.

Remarques

Le compactage ne peut être exécuté que sur un disque virtuel pouvant être développé dynamiquement ou différent.

Il existe deux types de compactage différents.

  • Le premier type, le compactage prenant en charge le système de fichiers, utilise le système de fichiers NTFS pour déterminer l’espace libre. Pour ce faire, attachez le disque dur virtuel en tant qu’appareil en lecture seule en incluant les indicateurs VIRTUAL_DISK_ACCESS_METAOPS et VIRTUAL_DISK_ACCESS_ATTACH_RO dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk, en attachant le disque dur virtuel en appelant AttachVirtualDisk et pendant que le disque dur virtuel est attaché en appelant CompactVirtualDisk. Le détachement du disque dur virtuel avant l’exécution du compactage peut entraîner un échec de compactage avant qu’il ne soit terminé (similaire à l’annulation du compactage).
  • Le deuxième type, le compactage indépendant du système de fichiers, n’implique pas le système de fichiers, mais recherche uniquement les blocs de disque dur virtuel entièrement remplis de zéros (0). Pour ce faire, incluez l’indicateur VIRTUAL_DISK_ACCESS_METAOPS dans le paramètre VirtualDiskAccessMask passé à OpenVirtualDisk et appelez CompactVirtualDisk.
Le compactage prenant en charge le système de fichiers est le type de compactage le plus efficace, mais en utilisant d’abord le compactage prenant en charge le système de fichiers, suivi du compactage indépendant du système de fichiers, produit le plus petit disque dur virtuel.

Une opération de compactage sur un disque virtuel peut être interrompue en toute sécurité et réexécuter ultérieurement. La réouverture d’un fichier de disque virtuel qui a été interrompu peut entraîner la réduction de la taille d’un fichier de disque virtuel au moment de l’ouverture.

Le compactage peut nécessiter beaucoup d’UC et/ou d’E/S, selon la taille du disque virtuel et le nombre de blocs nécessitant un déplacement.

La fonction CompactVirtualDisk s’exécute sur le disque virtuel dans le même contexte de sécurité que l’appelant.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
Serveur minimal pris en charge Windows Server 2008 R2
Plateforme cible Windows
En-tête virtdisk.h
Bibliothèque VirtDisk.lib
DLL VirtDisk.dll

Voir aussi

À propos du disque dur virtuel

Référence du disque dur virtuel