Clone a Disk by Copying Data

This function copies data from one virtual disk to another, converting (disk type, size, hardware) as specified.

vixError = VixDiskLib_Clone(appGlobals.connection, appGlobals.diskPath, srcConnection, 
              appGlobals.srcPath, &createParams, CloneProgressFunc, NULL, TRUE);

Due to a vSphere 6.5 security enhancement, VixDiskLib_Clone() can no longer clone local disks to remote disks that do not belong to any VM. Previous releases allowed use of a retained username and password, but now enhanced security verification is required. The procedure for VixDiskLib_Clone() to make a remote connection is first to get an NFC ticket from the ESXi host based on the MoRef of the VM that manages the cloned-to disks. Then build an authenticated NFC connection to the host using that ticket. The MoRef of the VM must be specified in vmxSpec of the remote connection parameter passed to VixDiskLib_Clone(). The VM must be powered off, and the target disks must already exist before cloning, not necessarily with the same names. Afterwards the VM may be removed from the inventory with UnregisterVM, but it must remain on the datastore with its cloned virtual disks.