I decided to use ShadowProtect to do a physical-to-virtual (P2V) move of an SBS 2003 machine. I booted the SBS 2003 machine from a ShadowProtect 3.5 CD and created offline images of the SBS 2003 partitions. I stored the ShadowProtect images on a simple USB drive formatted with NTFS and a 16KB cluster size. I used the default compression and did not encrypt the backup.
Next I moved the USB drive to a machine running Windows Server 2008 R2 with Hyper-V. In Disk Management, I set the drive Offline, then in Hyper-V Manager I attached the drive to a virtual machine as a pass-through disk. Finally I booted the Hyper-V virtual machine from a ShadowProtect 3.5.2 ISO file.
Since I was restoring a Server 2003 image, I used the ShadowProtect legacy recovery environment. I did not let it load the network since all drives were local to the VM. I started a restore of the boot partition from a ShadowProtect image file. After a minute the restore failed with a cyclic redundancy error 23. I tried to verify the various image files, and the verifies failed with a message that the files were corrupt. I rebooted from the CD several times but the results were always the same: ShadowProtect sees the files and may even start to read or verify one, but soon the read fails.
The Network Workaround
I decided to try the workaround I remembered from Virtual PC (which does not have pass-through disks). First I removed the pass-through disk from the Hyper-V VM, then set it Online in Disk Management. Then I booted into the ShadowProtect legacy environment with networking. Finally I started the restore over the network, attaching from inside the VM to the ShadowProtect image files on the host machine (e.g. \\HOST\R$\C_VOL.spf). This time I was able to restore three partitions with no errors.
Note In order for the ShadowProtect recovery environment to see the Hyper-V network, you have to set up the Hyper-V virtual machine with a Legacy Network Adapter.