Export (0) Print
Expand All

CreateSnapshot method of the Msvm_VirtualSystemSnapshotService class

Hyper-V

Creates a snapshot of a virtual machine.

Syntax


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

Parameters

AffectedSystem [in]

A reference to a CIM_ComputerSystem class that represents the virtual machine to create a snapshot of.

SnapshotSettings [in]

A string that contains an embedded instance of a CIM_SettingData class that contains the parameter settings for the snapshot. This parameter is optional and may be an empty string.

SnapshotType [in]

Specifies the type of snapshot requested. This must be one of the following values.

ValueMeaning
Full Snapshot
2

Complete snapshot of the virtual machine.

Disk Snapshot
3

Snapshot of virtual machine disks.

 

ResultingSnapshot [in, out]

A reference to a CIM_VirtualSystemSettingData object that represents the resulting virtual machine snapshot.

Job [in, out]

If the operation is performed asynchronously, this method will return 4096, and this parameter will contain a reference to an object derived from CIM_ConcreteJob.

Return value

This method returns one of the following values.

Completed with No Error (0)
Not Supported (1)
Failed (2)
Timeout (3)
Invalid Parameter (4)
Invalid State (5)
Invalid Type (6)
DMTF Reserved (..)
Method Parameters Checked - Job Started (4096)
Method Reserved (4097..32767)
Vendor Specific (32768..65535 )

Examples

The following C# example code creates a virtual machine. The referenced utilities can be found in Common utilities for the virtualization samples (V2).

Important  To function correctly, the following code must be run on the virtual machine host server, and it must be run with Administrator privileges.

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


Requirements

Minimum supported client

Windows 8 [desktop apps only]

Minimum supported server

Windows Server 2012 [desktop apps only]

Namespace

Root\Virtualization\V2

MOF

WindowsVirtualization.V2.mof

See also

Msvm_VirtualSystemSnapshotService
CreateVirtualSystemSnapshot (V1)

 

 

Community Additions

ADD
Show:
© 2015 Microsoft