2.1.5.10.29.4 Algorithm for REFS_STREAM_SNAPSHOT_OPERATION_REVERT

msdn link

Given a DataStream (A) and InputBuffer.SnapshotName representing the name of a file attribute referencing a DataStream (B), then:

  • If no such B exists, the request must be failed with STATUS_OBJECT_NAME_NOT_FOUND.

  • If the creation time of B is greater than the creation time of A, then the request must be failed with STATUS_INVALID_PARAMETER.

  • All IO to the File containing DataStreams A and B must be halted.

  • Every DataStream C such that A>C>B must be deleted.

  • Every named file attribute representing a DataStream C such that A>C≥B must be deleted.

  • The named file attribute representing A is updated to instead reference B.

  • IO to the file is resumed.

  • The operation is completed with STATUS_SUCCESS.<116>