Algorithm for Posting a USN Change for a File

The inputs for this algorithm are:

  • File: The file this change occurs on.

  • Reason: A 32-bit unsigned integer describing the change that occurred to the file, as specified in [MS-FSCC] section 2.3.48.

  • FileName: The pathname, relative to Volume.RootDirectory, of the file this change occurs on.

The algorithm MUST return at this point without taking any actions under any of the following conditions:

  • If the object store does not support USN change journals.

  • If File.Volume.IsUsnJournalActive is FALSE.

  • If Reason is zero.

Pseudocode for the algorithm is as follows:

  • Set FileNameLength to the length, in bytes, of FileName.

  • Set RecordLength to an implementation-specific<40> value representing the number of bytes needed to persist the USN change to the store.

  • Set File.Volume.LastUsn to File.Volume.LastUsn + RecordLength.

  • Set File.Usn to File.Volume.LastUsn.