Compartilhar via


Método CreateSnapshot da classe Msvm_VirtualSystemSnapshotService

Cria um instantâneo de uma máquina virtual.

Sintaxe

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]

Uma referência a uma classe CIM_ComputerSystem que representa a máquina virtual da qual criar uma instantâneo.

SnapshotSettings [in]

Uma cadeia de caracteres que contém uma instância inserida de uma classe CIM_SettingData que contém as configurações de parâmetro para o instantâneo. Esse parâmetro é opcional e pode ser uma cadeia de caracteres vazia.

SnapshotType [in]

Especifica o tipo de instantâneo solicitado. Esse deve ser um dos valores a seguir.

Instantâneo completo (2)

Conclua instantâneo da máquina virtual.

Instantâneo de disco (3)

Instantâneo de discos de máquina virtual.

DMTF Reservado (..)

Específico do fornecedor (32768..65535)

ResultingSnapshot [in, out]

Uma referência a um objeto CIM_VirtualSystemSettingData que representa a máquina virtual resultante instantâneo.

Trabalho [out]

Se a operação for executada de forma assíncrona, esse método retornará 4096 e esse parâmetro conterá uma referência a um objeto derivado de CIM_ConcreteJob.

Valor retornado

Esse método retorna um dos valores a seguir.

Concluído sem erro (0)

Sem suporte (1)

Falha (2)

Tempo limite (3)

Parâmetro inválido (4)

Estado inválido (5)

Tipo inválido (6)

DMTF Reservado (..)

Parâmetros de método verificados – Trabalho iniciado (4096)

Método Reservado (4097..32767)

Específico do fornecedor (32768..65535)

Exemplos

O código de exemplo C# a seguir cria uma máquina virtual. Os utilitários referenciados podem ser encontrados em Utilitários comuns para os exemplos de virtualização (V2).

Importante

Para funcionar corretamente, o código a seguir deve ser executado no servidor host da máquina virtual e deve ser executado com privilégios 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 Valor
Cliente mínimo com suporte
Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2012 [somente aplicativos da área de trabalho]
Namespace
Root\Virtualization\V2
Cabeçalho
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Confira também

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)