[VSS] Differential backup on Windows XP

zihming 40 Reputation points
2026-06-15T09:13:51.29+00:00

I am trying to implement differential backups on Windows XP using VSS.

My understanding is that differential backups require keeping the initial snapshot (or backup baseline) and then creating additional snapshots later for comparison. However, when using IVssBackupComponents to create shadow copies, I encounter an error (VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED) when attempting to create a second shadow copy while the first one still exists.

This makes me wonder whether Windows XP allows only a single shadow copy per volume at a time.

Is differential backup actually supported on Windows XP through VSS? If so, is it possible to keep multiple shadow copies for the same volume simultaneously, or is there another mechanism that should be used to implement differential backups?

Windows for home | Previous Windows versions | Files, folders, and storage
0 comments No comments

Answer accepted by question author
Lychee-Ng 28,810 Reputation points Microsoft External Staff Moderator
2026-06-16T12:01:45.5266667+00:00

Hi zihming,

You’re not wrong in your assumption, what you’re running into is mostly a limitation of how VSS works on Windows XP. The AI answer actually covered the overall concept, so I will just go directly into it: In practice, Windows XP doesn’t really support the “keep multiple snapshots and compare them” approach you’re trying to implement.

On XP system, the snapshots created through the normal backup context are non‑persistent (basically temporary). They’re meant to exist only for the duration of the backup operation and then get released. Because of that, trying to keep one snapshot around and create another one on the same volume usually results in errors like VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED.

That said, differential backups are still supported, just not in that way. With VSS, differential isn’t done by comparing two live snapshots. Instead, it relies on metadata (backup stamps, last modified times, etc.) from the previous backup. In other words:

  • You take one snapshot > do your backup > let it go.
  • On the next run, you take a new snapshot and use the stored metadata to decide what changed.
  • You don’t need (and can’t reliably keep) the previous snapshot around.

Also just a suggestion, since your idea may involve developer‑level VSS work, if you're building or maintaining this against modern requesters/writers, you should check in a developer‑focused channel to see if there's any more elevated workaround!


If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".

Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

Was this answer helpful?

2 people found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. AI answer

    2026-06-15T09:14:32.43+00:00

    Differential backups are supported by VSS on Windows XP, but they do not require (and in VSS terms do not use) multiple simultaneously mounted shadow copies of the same volume.

    Key points from VSS behavior and documentation in the context:

    1. VSS backup types vs. number of snapshots
      VSS explicitly supports conventional backup types (full, incremental, differential) via its backup configuration model, where the requester and writers coordinate using backup state and writer backup schema support:

      “There are a number of conventionally supported backup types—incremental, differential, and full—that VSS is aware of… Interaction between writers and requesters is determined by the type of backup a requester wants to perform and the kinds (or schemas) that each writer can support.”
      (VSS Backup Configurations)

      This means differential backups are a logical backup mode negotiated between requester and writers, not a guarantee of multiple concurrent snapshots.
    2. Differential/incremental logic is based on writer metadata, not multiple live snapshots
      For incremental and differential backups, writers expose which files (or parts of files) have changed since the last backup, using mechanisms such as:
      • IVssComponent::AddDifferencedFileByLastModifyTime for differenced files, based on last modification time and writer schema support (VSS_BS_SCHEMA).
      • Backup stamps (VSS_BS_TIMESTAMP) stored via IVssComponent::SetBackupStamp in the Backup Components Document.
      From the documentation:

      “Writers that support a last modified backup schema (VSS_BS_SCHEMA) can add differenced files to an incremental or differential backup.”
      “Typically, a writer will also specify a time of last modification when adding a differenced file… This last modification time, if specified, must always be used by requesters in determining if a file needs to be included in an incremental or differential backup.”
      “The backup stamp is stored in the Backup Components Document as a string by the IVssComponent::SetBackupStamp method.”
      (Writer Role in VSS Incremental and Differential Backups)

      Differential backups therefore rely on:
      • The previous backup’s metadata (backup stamp, last-modified times, or requester’s own history), and
      • The current snapshot for the current backup.
      They do not require keeping the previous snapshot mounted or even present as a VSS shadow copy on the system.
    3. Multiple snapshots vs. differential backup
      The error VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED indicates that the system’s limit for snapshots on that volume has been hit. The context provided does not specify the exact snapshot-count limits per volume for Windows XP; it only states that XP supports “Concurrent backup sessions (up to 64)” at the OS level:

      “Concurrent backup sessions (up to 64) | Windows XP | Windows Server 2003”
      (Volume Shadow Copy Service (VSS))

      “Concurrent backup sessions” is not the same as “unlimited snapshots per volume.” A given XP system can still impose a low limit on the number of snapshots per volume, and hitting that limit will cause VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED when trying to create another snapshot without deleting older ones. Crucially, VSS differential backup semantics do not depend on having multiple snapshots at once. A typical flow for a differential backup is:
      1. Perform a full backup using VSS (one snapshot). Writers set backup stamps and/or last-modified metadata.
      2. Later, perform a differential backup: create a new snapshot, query writers, and back up only the differenced files they indicate (or those determined via last-modified times or requester’s own tracking).
      3. Optionally delete the old snapshot; the differential logic still works because it is based on metadata, not on comparing two live snapshots.
    4. Conclusion for Windows XP
      • Differential backups are supported by VSS on Windows XP as part of the standard VSS backup configurations.
      • Implementing a differential backup does not require keeping the original baseline snapshot alive. The baseline is the previous backup set plus its metadata (backup stamp, last-modified times, or requester-maintained history), not an active VSS snapshot.
      • Windows XP may limit the number of snapshots per volume, and hitting that limit produces VSS_E_MAXIMUM_NUMBER_OF_SNAPSHOTS_REACHED. This is expected and does not mean differential backups are unsupported; it only means multiple simultaneous snapshots are limited.
      • The correct mechanism is to use VSS backup configuration and writer schemas (backup stamps, differenced files, last-modified times) rather than trying to hold multiple snapshots and compare them directly.

    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.