This program is created to retrieve a system dump from a Phase II shadowed systemdisk. The problem is that the bugcheck code writes to the member we booted from (normally), but as far as shadowing is concearned the disks are the same. A merge copy which may start after a crash may not be able to correct the blocks of the dumpfile on all the disks of the shadowset. Suppose that a dumpfile starts at the end of the disk, and ends at the beginning of it. When a system crashes we will start writing at the end of the disk, and it is very well possible that when we reach the part of the dumpfile at the beginning of the disk that that part has already been merged by a merge copy. The net result is inconsistent data as far as the dumpfile is concearned. This can of course be corrected by dismounting members of the shadowset except the master, and remount the members after which a full shadowcopy will correct things. This may have a rather high impact, which most customers don't want on their live systems. Another way to correct things is to trigger a merge copy on the fly. That's certainly possible but it involves kernel-mode hacking which is always error-prone. What we do here is look for the retrieval pointers of the dumpfile (they are already stored in memory by SYSINIT) and look which shadowset member is the master. We then copy all blocks mapped by the dumpfile from the master member to an output file.