Compartir a través de


Método CreateSnapshot de la clase Msvm_VirtualSystemSnapshotService

Crea una instantánea de una máquina virtual.

Sintaxis

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

Parámetros

AffectedSystem [in]

Referencia a una clase CIM_ComputerSystem que representa la máquina virtual de la que se va a crear una instantánea.

SnapshotSettings [in]

Cadena que contiene una instancia insertada de una clase CIM_SettingData que contiene la configuración de parámetros de la instantánea. Este parámetro es opcional y puede ser una cadena vacía.

SnapshotType [in]

Especifica el tipo de instantánea solicitada. Debe ser uno de los siguientes valores.

Instantánea completa (2)

Complete la instantánea de la máquina virtual.

Instantánea de disco (3)

Instantánea de discos de máquina virtual.

DMTF Reserved (..)

Específico del proveedor (32768..65535)

ResultsSnapshot [in, out]

Referencia a un objeto CIM_VirtualSystemSettingData que representa la instantánea de máquina virtual resultante.

Trabajo [salida]

Si la operación se realiza de forma asincrónica, este método devolverá 4096 y este parámetro contendrá una referencia a un objeto derivado de CIM_ConcreteJob.

Valor devuelto

Este método devuelve uno de los valores siguientes.

Completado sin error (0)

No compatible (1)

Error (2)

Tiempo de espera (3)

Parámetro no válido (4)

Estado no válido (5)

Tipo no válido (6)

DMTF Reserved (..)

Parámetros de método comprobados: trabajo iniciado (4096)

Método reservado (4097..32767)

Específico del proveedor (32768..65535)

Ejemplos

El siguiente código de ejemplo de C# crea una máquina virtual. Las utilidades a las que se hace referencia se pueden encontrar en Utilidades comunes para los ejemplos de virtualización (V2).

Importante

Para funcionar correctamente, el código siguiente debe ejecutarse en el servidor host de la máquina virtual y debe ejecutarse con privilegios de administrador.

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();
}

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2012 [solo aplicaciones de escritorio]
Espacio de nombres
Root\Virtualization\V2
Encabezado
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
Archivo DLL
Vmms.exe

Consulte también

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)