Export (0) Print
Expand All
Expand Minimize

5.11 AttributeStamp

AttributeStamp is an abstract type that contains information about the last originating update to an attribute. It is a tuple of the following:

  • dwVersion: A 32-bit integer. Set to 1 when a value for the attribute is set for the first time. On each subsequent originating update, if the current value of dwVersion is less than 0xFFFFFFFF, then increment it by 1; otherwise set it to 0.

  • timeChanged: The date and time at which the last originating update was made.

  • uuidOriginating: The invocation ID of the DC that performed the last originating update.

  • usnOriginating: The USN assigned to the last originating update by the DC that performed it.

Comparisons

Version Comparison: The following procedure is used for comparing the dwVersion fields of two AttributeStamps:

procedure CompareVersions(x: DWORD, y: DWORD): int

Informative summary of behavior: This procedure compares two dwVersions and returns an integer that is used in AttributeStamp following comparisons.

  if x = y then
     return 0
  elseif x > 0x7FFFFFFF then
     if y = (x – 0x80000000) then
        return 1
     elseif (y < (x – 0x7FFFFFFF)) or (x < y) then
        return -1
     else
        return 1
     endif
  elseif x < 0x7FFFFFFF then
     if y = (x + 0x80000000) then
        return -1
     elseif (x < y) and (y < (x – 0x7FFFFFFF)) then
        return -1
     else
        return 1
     endif
  else
     if y = 0xFFFFFFFF then
        return -1
     elseif x < y then
        return -1
     else
        return 1
     endif
  endif

AttributeStamp Comparison: Given two AttributeStampsx and y, let d be the result of the procedure CompareVersions(x.dwVersion, y.dwVersion).

x is said to be equal to y if any of the following is true:

  • x is null and y is null

  • d = 0 and x.timeChanged = y.timeChanged and x.uuidOriginating = y.uuidOriginating

x is said to be greater than y if any of the following is true:

  • x is not null and y is null

  • d > 0

  • d = 0 and x.timeChanged > y.timeChanged

  • d = 0 and x.timeChanged = y.timeChanged and x.uuidOriginating > y.uuidOriginating

x is said to be less than y if any of the following is true:

  • x is null and y is not null

  • d < 0

  • d = 0 and x.timeChanged < y.timeChanged

  • d = 0 and x.timeChanged = y.timeChanged and x.uuidOriginating < y.uuidOriginating

Conversions

A value x of type AttributeStamp may be converted to and from its wire format y of type PROPERTY_META_DATA_EXT by associating the values of fields in x with the values of the like-named fields in y.

 
Show:
© 2014 Microsoft