Backing Up a Virtual Disk

This section describes how to get data from the Virtual Disk after you have identified it. In order to access a virtual disk, you must use the
VixDiskLib
. The following code shows how to initialize the
VixDiskLib
and use it for accessing a virtual disk. All operations require a
VixDiskLib
connection to access virtual disk data. At the present time
VixDiskLib
is not implemented for the Java language, so this code is C++ language:
VixDiskLibConnectParams connectParams; VixDiskLibConnection srcConnection; connectParams.serverName = strdup("TargetServer"); connectParams.creds.uid.userName = strdup("root"); connectParams.creds.uid.password = strdup("yourPasswd"); connectParams.port = 902; VixError vixError = VixDiskLib_Init(1, 0, &logFunc, &warnFunc, &panicFunc, libDir); vixError = VixDiskLib_Connect(&connectParams, &srcConnection);
This next section of code shows how to open and read a specific virtual disk:
VixDiskLibHandle diskHandle; vixError = VixDiskLib_Open(srcConnection, diskPath, flags, &diskHandle); uint8 mybuffer[some_multiple_of_512]; vixError = VixDiskLib_Read(diskHandle, startSector, numSectors, &mybuffer); // Also getting the disk metadata: size_t requiredLength = 1; char *buf = new char [1]; // This next operation fails, but updates "requiredLength" with the proper buffer size vixError = VixDiskLib_GetMetadataKeys(diskHandle, buf, requiredLength, &requiredLength); delete [] buf; buf = new char[requiredLength]; // Create a large enough buffer vixError = VixDiskLib_GetMetadataKeys(diskHandle, buf, requiredLength, NULL); // And finally, close the
diskHandle
: vixError = VixDiskLib_Close(diskHandle); // And if you are completely done with the VixDiskLib VixDiskLib_Disconnect(srcConnection); VixDiskLib_Exit();