Quantcast
Channel: VMware Communities : Discussion List - Virtual Disk Development Kit
Viewing all articles
Browse latest Browse all 2039

How to use VixDiskLib_Attach?

$
0
0

I try to use VixDiskLib_Attach as below, but always get the error message "The parent virtual disk has been modified since the child was created". Can anyone give me a sample code? Thanks in advance!

 

//

//dchInfo.parent = "Z:
Jeegn
parent.vmdk";

//dchInfo.lchild = "Z:
Jeegn
lchild.vmdk";

//dchInfo.rchild = "Z:
Jeegn
rchild.vmdk";

//

 

 

void DoCreateAttach3(DiskChainInfo& dchInfo)

{

VixDiskLibConnectParams cnxParams = {0};

VixDiskLibConnection connection = NULL;

VixDiskLibCreateParams createParams;

bool lchildCreated = false, rchildCreated = false;

VixError vixError = 0;

try {

createParams.adapterType = (VixDiskLibAdapterType)3;

createParams.capacity = 16384;

createParams.diskType = VIXDISKLIB_DISK_MONOLITHIC_FLAT;

createParams.hwVersion = VIXDISKLIB_HWVERSION_WORKSTATION_5;

{color:#ff00ff}cout<<":::::::::::::::::::::Connect to localhost"<<endl;

vixError = VixDiskLib_Connect(&cnxParams, &connection);

CHECK_AND_THROW(vixError);

cout<<":::::::::::::::::::::Create parent Disk"<<endl;

vixError = VixDiskLib_Create(connection, dchInfo.parent, &createParams, NULL, NULL);

CHECK_AND_THROW(vixError);

cout<<":::::::::::::::::::::Open Parent Disk"<<endl;

VixDisk parentDisk(connection, dchInfo.parent, VIXDISKLIB_FLAG_OPEN_READ_ONLY);

cout<<":::::::::::::::::::::Create right child Disk"<<endl;

VixDiskLibCreateParams createParams;

createParams.adapterType = (VixDiskLibAdapterType)3;

createParams.capacity = 16384;

createParams.diskType = VIXDISKLIB_DISK_MONOLITHIC_SPARSE;

createParams.hwVersion = VIXDISKLIB_HWVERSION_WORKSTATION_5;

vixError = VixDiskLib_Create(connection, dchInfo.rchild, &createParams, NULL, NULL);

CHECK_AND_THROW(vixError);

cout<<":::::::::::::::::::::Open right child Disk"<<endl;VixDisk rchildDisk(connection, dchInfo.rchild, VIXDISKLIB_FLAG_OPEN_READ_ONLY);cout<<":::::::::::::::::::::Attach right child Disk to parent Disk"<<endl;

vixError = VixDiskLib_Attach(parentDisk.Handle(), rchildDisk.Handle()); CHECK_AND_THROW(vixError);

cout<<":::::::::::::::::::::Attach success"<<endl;

parentDisk.Close();

rchildDisk.Close();

VixDiskLib_Disconnect(connection);

} catch (const VixDiskLibErrWrapper& e) {

if (connection)

VixDiskLib_Disconnect(connection);

cout << "Error: " << e.File() << ":" << e.Line() << " " <<

std::hex << e.ErrorCode() << " " << e.Description() << "\n";

}

 

 

}


Viewing all articles
Browse latest Browse all 2039

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>