/* Copy the data. */ uint64_t uOffset = 0; uint64_t cbRemaining = cbSize; do { size_t cbThisRead = RT_MIN(VD_BUFFER_SIZE, cbRemaining); rc = vdReadHelper(pDiskFrom, pImageFrom, uOffset, pvBuf, cbThisRead); if (VBOX_FAILURE(rc)) break; rc = vdWriteHelper(pDiskTo, pImageTo, uOffset, pvBuf, cbThisRead); if (VBOX_FAILURE(rc)) break; uOffset += cbThisRead; cbRemaining -= cbThisRead; } while (uOffset < cbSize);