Name
VMCreateSnapshot
Description
($err, $snapshotHandle) = VMCreateSnapshot($vmHandle,
$name,
$description,
$options,
$propertyListHandle);
This
function
saves a copy of the virtual machine state as a snapshot object.
Parameters
- vmHandle
-
Identifies a virtual machine. Call VMOpen() to create a virtual machine handle.
- name
-
A user-defined name for the snapshot; need not be unique.
- description
-
A user-defined description for the snapshot.
- options
-
Flags to specify how the snapshot should be created. Any
combination of the following or 0 to exclude memory:
- VIX_SNAPSHOT_INCLUDE_MEMORY - Captures the full state of a
running virtual machine, including the memory.
- propertyListHandle
-
Must be VIX_INVALID_HANDLE.
Return Value
$err. The error code returned by the operation. For returned values, see Topics > Error Codes.
$snapshotHandle. A handle to the newly created snapshot.
Remarks
- This function creates a child snapshot of the current snapshot.
- If a virtual machine is suspended, you cannot snapshot it more than once.
- If a powered-on virtual machine gets a snapshot created with option 0 (exclude memory),
the power state is not saved, so reverting to the snapshot sets powered-off state.
- The 'name' and 'description' parameters can be set but not retrieved
using the VIX API.
- VMware Server supports only a single snapshot for each virtual machine.
The following considerations apply to VMware Server:
- If you call this function a second time for the same virtual machine
without first deleting the snapshot, the second call will overwrite
the previous snapshot.
- A virtual machine imported to VMware Server from another VMware product
might have more than one snapshot at the time it is imported.
In that case, you can use this function to add a new snapshot to the
series.
- Starting in VMware Workstation 6.5, snapshot operations are allowed on
virtual machines that are part of a team. Previously, this operation failed
with error code VIX_PROPERTY_VM_IN_VMTEAM. Team members snapshot independently
so they can have different and inconsistent snapshot states.
- This function is not supported when using the
VIX_SERVICEPROVIDER_VMWARE_PLAYER
host type.
- If the virtual machine is open and powered off in the UI, this function
now closes the virtual machine in the UI before creating the snapshot.
Side Effects
None.
Requirements
use VMware::Vix::Simple;
use VMware::Vix::API::Constants;
since VMware Workstation 6.0
Example
my $err = VIX_OK;
my $hostHandle = VIX_INVALID_HANDLE;
my $vmHandle = VIX_INVALID_HANDLE;
my $snapshotHandle = VIX_INVALID_HANDLE;
($err, $hostHandle) = HostConnect(VIX_API_VERSION,
VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
undef, # hostName
0, # hostPort
undef, # userName
undef, # password
0, # options
VIX_INVALID_HANDLE); # propertyListHandle
die "HostConnect() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
($err, $vmHandle) = VMOpen($hostHandle,
"c:\\Virtual Machines\\vm1\\win2000.vmx");
die "VMOpen() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMPowerOn($vmHandle,
VIX_VMPOWEROP_LAUNCH_GUI, # powerOnOptions
VIX_INVALID_HANDLE); # propertyListHandle
die "VMPowerOn() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
# Create snapshot in powered-on state.
$(err, $snapshotHandle) = VMCreateSnapshot($vmHandle,
undef, # name
undef, # description
VIX_SNAPSHOT_INCLUDE_MEMORY, # options
VIX_INVALID_HANDLE);