Partager via


Méthode CompactVirtualHardDisk de la classe Msvm_ImageManagementService

Compacte un fichier de disque dur virtuel. Le compactage est le processus qui libère des parties inutilisées du disque dur virtuel. Le disque dur virtuel n’est pas monté automatiquement. Consultez Remarques pour connaître les restrictions d’utilisation pour cette méthode.

Syntaxe

uint32 CompactVirtualHardDisk(
  [in]  string              Path,
  [in]  uint16              Mode,
  [out] CIM_ConcreteJob REF Job
);

Paramètres

Chemin d’accès [in]

Type : chaîne

Chemin d’accès complet qui spécifie l’emplacement du fichier de fusion.

Mode [in]

Type : uint16

Spécifie le mode de l’opération de compactage. Il doit s’agir de l’une des valeurs suivantes.

Complet (0)

Rapide (1)

Retrim (2)

Prétrimmed (3)

Prédéfinit ( 4)

Travail [out]

Type : CIM_ConcreteJob

Référence au travail (peut être Null si la tâche est terminée).

Valeur retournée

Type : uint32

Cette méthode peut retourner l’une des valeurs suivantes.

Terminé avec aucune erreur (0)

Paramètres de méthode vérifiés - Travail démarré (4096)

Échec (32768)

Accès refusé (32769)

Non pris en charge (32770)

L’état est inconnu (32771)

Délai d’expiration (32772)

Paramètre non valide (32773)

Le système est en cours d’utilisation (32774)

État non valide pour cette opération (32775)

Type de données incorrect (32776)

Le système n’est pas disponible (32777)

Mémoire insuffisante (32778)

Fichier introuvable (32779)

Notes

Seuls les types de disques durs virtuels suivants peuvent être utilisés avec cette méthode :

  • VHDX corrigé
  • Disque dur virtuel dynamique
  • VHDX dynamique
  • Disque dur virtuel de différenciation
  • Différenciation de VHDX

L’accès à la classe Msvm_ImageManagementService peut être limité par le filtrage de contrôle d’utilisateur. Pour plus d’informations, consultez Contrôle de compte d’utilisateur et WMI.

Exemples

L’exemple C# suivant compacte un disque dur virtuel. Les utilitaires référencés se trouvent dans Utilitaires communs pour les exemples de virtualisation (V2).

public enum VirtualHardDiskCompactMode
{
    Full = 0,
    Quick = 1,
    Retrim = 2,
    Pretrimmed = 3,
    Prezeroed = 4
}

public static void CompactVirtualHardDisk(string vhdPath, VirtualHardDiskCompactMode compactMode)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("CompactVirtualHardDisk");
    inParams["Path"] = vhdPath;
    inParams["Mode"] = compactMode;
    ManagementBaseObject outParams = imageService.InvokeMethod("CompactVirtualHardDisk", inParams, null);
    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("{0} was compacted successfully.", inParams["Path"]);
        }
        else
        {
            Console.WriteLine("Unable to compact {0}", inParams["Path"]);
        }
    }
    else
    {
        Console.WriteLine("Compact {0} returned error {1}", inParams["Path"], outParams["ReturnValue"]);
    }

    inParams.Dispose();
    outParams.Dispose();
    imageService.Dispose();
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2012 [applications de bureau uniquement]
Espace de noms
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Voir aussi

CIM_ConcreteJob

Msvm_ImageManagementService