CreateSnapshot method of the Msvm_VirtualSystemSnapshotService class

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,
  [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.

Full Snapshot (2)

Complete snapshot of the virtual machine.

Disk Snapshot (3)

Snapshot of virtual machine disks.

DMTF Reserved (..)

Vendor Specific (32768..65535)

ResultingSnapshot [in, out]

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

Job [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

Requirement Value
Minimum supported client
Windows 8 [desktop apps only]
Minimum supported server
Windows Server 2012 [desktop apps only]
Namespace
Root\Virtualization\V2
Header
Dbdaoint.h
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

See also

Msvm_VirtualSystemSnapshotService

CreateVirtualSystemSnapshot (V1)