Demonstrating random I/O, this function reads a sector at a time backwards through a VMDK. If it sees the string “VmWare” it substitutes the string “VMware” in its place and writes the sector back to VMDK.
#include <string>
static void DoEdit(void)/
{
VixDisk disk(appGlobals.connection, appGlobals.diskPath, appGlobals.openFlags);
uint8 buf[VIXDISKLIB_SECTOR_SIZE];
VixDiskLibSectorType i;
string str;
for (i = appGlobals.numSectors; i >= 0; i--) {
VixError vixError;
vixError = VixDiskLib_Read(disk.Handle(), appGlobals.startSector + i, 1, buf);
CHECK_AND_THROW(vixError);
str = buf;
if (pos = str.find("VmWare", 0)) {
str.replace(pos, 5, "VMware");
buf = str;
vixError = VixDiskLib_Write(disk.Handle(), appGlobals.startSector + i, 1, buf);
CHECK_AND_THROW(vixError);
}
}
}