Méthode CreateSnapshot de la _ classe VirtualSystemSnapshotService MSVM

Crée une capture instantanée d’un ordinateur virtuel.

Syntaxe

uint32 CreateSnapshot(
  [in]      CIM_ComputerSystem           REF AffectedSystem,
  [in]      string                           SnapshotSettings,
  [in]      uint16                           SnapshotType,
  [in, out] CIM_VirtualSystemSettingData REF ResultingSnapshot,
  [out]     CIM_ConcreteJob              REF Job
);

Paramètres

AffectedSystem [ dans]

Référence à une classe _ ComputerSystem CIM qui représente l’ordinateur virtuel pour lequel créer un instantané.

SnapshotSettings [ dans]

Chaîne qui contient une instance incorporée d’une classe CIM _ SettingData qui contient les paramètres de l’instantané. Ce paramètre est facultatif et peut être une chaîne vide.

SnapshotType [ dans]

Spécifie le type d’instantané demandé. Il doit s’agir de l’une des valeurs suivantes.

Instantané complet (2)

Capture instantanée complète de la machine virtuelle.

Capture instantanée de disque (3)

Capture instantanée des disques de machine virtuelle.

DMTF réservé (..)

Spécifique au fournisseur (32768.. 65535)

ResultingSnapshot [ in, out]

Référence à un objet _ VirtualSystemSettingData CIM qui représente l’instantané d’ordinateur virtuel résultant.

Travail [ à]

Si l’opération est effectuée de façon asynchrone, cette méthode retourne 4096 et ce paramètre contient une référence à un objet dérivé de CIM _ ConcreteJob.

Valeur retournée

Cette méthode retourne l’une des valeurs suivantes.

Terminé sans erreur (0)

Non pris en charge (1)

Échec (2)

Délai d’expiration (3)

Paramètre non valide (4)

État non valide (5)

Type non valide (6)

DMTF réservé (..)

Paramètres de méthode activés-tâche démarrée (4096)

Méthode réservée (4097.. 32767)

Spécifique au fournisseur (32768.. 65535)

Exemples

L’exemple de code C# suivant crée une machine virtuelle. Les utilitaires référencés se trouvent dans les utilitaires courants pour les exemples de virtualisation (v2).

Important

Pour fonctionner correctement, le code suivant doit être exécuté sur le serveur hôte de l’ordinateur virtuel et doit être exécuté avec des privilèges d’administrateur.

public static void CreateSnapshot(string vmName)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject virtualSystemService = Utility.GetServiceObject(scope, "Msvm_VirtualSystemSnapshotService");

    ManagementBaseObject inParams = virtualSystemService.GetMethodParameters("CreateSnapshot");

    // Set the AffectedSystem property.
    ManagementObject vm = Utility.GetTargetComputer(vmName, scope);
    if (null == vm)
    {
        throw new ArgumentException(string.Format("The virtual machine \"{0}\" could not be found.", vmName));
    }

    inParams["AffectedSystem"] = vm.Path.Path;

    // Set the SnapshotSettings property.
#if(true)
    inParams["SnapshotSettings"] = "";
#else
    ManagementObject snapshotSettings = Utility.GetServiceObject(scope, "CIM_SettingData"); 
    inParams["SnapshotSettings"] = snapshotSettings.ToString();
#endif       
    // Set the SnapshotType property.
    inParams["SnapshotType"] = 2; // Full snapshot.

    ManagementBaseObject outParams = virtualSystemService.InvokeMethod("CreateSnapshot", inParams, null);

    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("Snapshot was created successfully.");

            MiscClass.GetAffectedElement(outParams, scope);
        }
        else
        {
            Console.WriteLine("Failed to create snapshot VM");
        }
    }
    else if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
    {
        Console.WriteLine("Snapshot was created successfully.");
    }
    else
    {
        Console.WriteLine("Create virtual system snapshot failed with error {0}", outParams["ReturnValue"]);
    }

    inParams.Dispose();
    outParams.Dispose();
    vm.Dispose();
    virtualSystemService.Dispose();
}

Configuration requise

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
\Virtualisation racine \ v2
En-tête
Dbdaoint. h
MOF
WindowsVirtualization. v2. mof
DLL
Vmms.exe

Voir aussi

MSVM _ VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (v1)