# Name

VixVM_RemoveSnapshot

# Description

    VixHandle
    VixVM_RemoveSnapshot(VixHandle vmHandle,
                         VixHandle snapshotHandle,
                         int options,
                         VixEventProc *callbackProc,
                         void *clientData);

This function deletes all saved states for the specified snapshot.

# Parameters

vmHandle
  Identifies a virtual machine. Call VixVM_Open() to create a virtual machine handle.
snapshotHandle
  A handle to a snapshot. Call VixVM_GetRootSnapshot() to get a snapshot handle.
options
  Flags to specify optional behavior. Any combination of the following or 0:
  - VIX_SNAPSHOT_REMOVE_CHILDREN - Remove snapshots that are children of the given snapshot.
callbackProc
  A callback function that will be invoked when the operation is complete.
clientData
  A parameter that will be passed to the callbackProc function.

# Return Value

VixHandle. A job handle that describes the state of this asynchronous operation.

# Remarks

- This function deletes all saved states for the specified snapshot. If the snapshot was based on another snapshot, the base snapshot becomes the new root snapshot.
- The VMware Server release of the VIX API can manage only a single snapshot for each virtual machine. A virtual machine imported from another VMware product can have more than one snapshot at the time it is imported. In that case, you can delete only a snapshot subsequently added using the VIX API.
- 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 may close the virtual machine in the UI before deleting the snapshot.

# Side Effects

None.

# Requirements

vix.h, since VMware Server 1.0

# Example

This example deletes every root snapshot belonging to a virtual machine.

    VixError err = VIX_OK;
    VixHandle hostHandle = VIX_INVALID_HANDLE;
    VixHandle jobHandle = VIX_INVALID_HANDLE;
    VixHandle vmHandle = VIX_INVALID_HANDLE;
    VixHandle snapshotHandle = VIX_INVALID_HANDLE;

    jobHandle = VixHost_Connect(VIX_API_VERSION,
                                VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
                                NULL, // hostName
                                0, // hostPort
                                NULL, // userName
                                NULL, // password
                                0, // options
                                VIX_INVALID_HANDLE, // propertyListHandle
                                NULL, // callbackProc
                                NULL); // clientData

    err = VixJob_Wait(jobHandle,
                      VIX_PROPERTY_JOB_RESULT_HANDLE,
                      &hostHandle,
                      VIX_PROPERTY_NONE);

    if (VIX_OK != err) {
       // Handle the error...
       goto abort;
    }
    Vix_ReleaseHandle(jobHandle);
    jobHandle = VixVM_Open(hostHandle,
                           "c:\\Virtual Machines\\vm1\\win2000.vmx",
                           NULL, // callbackProc
                           NULL); // clientData
    err = VixJob_Wait(jobHandle,
                      VIX_PROPERTY_JOB_RESULT_HANDLE,
                      &vmHandle,
                      VIX_PROPERTY_NONE);
    if (VIX_OK != err) {
       // Handle the error...
       goto abort;
    }

    Vix_ReleaseHandle(jobHandle);

    // Only 1 snapshot supported in the server 1.0 release.
    numRootSnapshots = 1;
    err = Vix_VM_GetNumRootSnapshots(vmHandle, &numRootSnapshots);
    if (VIX_OK != err) {
       // Handle the error...
       goto abort;
    }

    for (index = 0; index < numRootSnapshots; index++ ) {
       err = VixVM_GetRootSnapshot(vmHandle,
                                   index,
                                   &snapshotHandle);
       if (VIX_OK != err) {
          // Handle the error...
          goto abort;
       }
       jobHandle = VixVM_RemoveSnapshot(vmHandle,
                                        snapshotHandle,
                                        0, // options
                                        NULL, // callbackProc
                                        NULL); // clientData

       err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
       if (VIX_OK != err) {
          // Handle the error...
          goto abort;
       }
       Vix_ReleaseHandle(jobHandle);
       Vix_ReleaseHandle(snapshotHandle);
       snapshotHandle = VIX_INVALID_HANDLE;
    }

    abort:
    Vix_ReleaseHandle(jobHandle);
    Vix_ReleaseHandle(snapshotHandle);
    Vix_ReleaseHandle(vmHandle);
    VixHost_Disconnect(hostHandle);

Copyright (C) 2007-2018 VMware, Inc. All rights reserved.