Requester Access to Shadow Copied Data

Once the shadow copy has completed, the most important mechanism for getting access to the file data it contains is through the use of the shadow copy's device object.

The m_pwszSnapshotDeviceObject member of a VSS_SNAPSHOT_PROP structure is a string containing a shadow-copied volume's device object. A requester can obtain a shadow-copied volume's VSS_SNAPSHOT_PROP object if it knows the volume's VSS_ID (identifying GUID) and passes it to IVssBackupComponents::GetSnapshotProperties.

A requester can also obtain shadow copy property information by using the Obj.Snap member of the VSS_OBJECT_PROP structure (which is a VSS_SNAPSHOT_PROP structure) obtained by using IVssEnumObject to iterate over the list of objects returned by a call to IVssBackupComponents::Query.

The device object should be interpreted as the root of a shadow-copied volume. For this reason, the device object contains no backslash ("\").

Paths on the shadow copied volume are obtained by replacing the root of the original path with the device object. For example, given a path on the original volume of "C:\DATABASE\*.mdb" and a VSS_SNAPSHOT_PROP instance of snapProp, you would obtain the path on the shadow copied volume by concatenating snapPropm_pwszShadow copyDeviceObject, "\", and "\DATABASE\*.mdb".

The VSS file sets might have wildcard characters in their file descriptors, so obtaining a full list of the files on a shadow copy managed by a component might require the use of methods such as FindFileFirst, FindFileFirstEx, and FindNextFile.