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 |
|
MOF |
|
DLL |
|