Flat.vmdks are not virtual disks - they dont use a header like VMFSsparse, Sesparse or Workstation VMDK sparse types.
Treat them like dd images instead.
Thank you very much.
I suppose the flat.vmdk can be prased accord to virtual disk format 5.0 specific, and I can get the valid disk blocks offset (really used by vms), so I can only backup this valid disk blocks. If the flat.vmdk can not be prased . I think I can use vddk 6.7 QueryAllocatedBlocks interface or vsphere api QueryChangedDiskAreas to get disk valid block offset.
Is there any other way to try ?
Forget parsing flat.vmdks.
To develope a backup tool look into ctk.vmdks.