Export (0) Print
Expand All

4.1.10.5.17 SortResponseLinks

procedure SortResponseLinks(var msgOut: DRS_MSG_GETCHGREPLY_V6)

The SortResponseLinks procedure sorts the contents of msgOut.rgValues in ascending order according to the comparison method CompareLinks():

procedure CompareLinks(REPLVALINF val1, REPLVALINF val2): integer
begin
  c: integer
  dsname1: DSName
  dsname2: DSName

  /* Returns 1
     if val1 > val2, 0 if val1 = val2, or -1 if val1 < val2. */

  /* Compare by ascending host object objectGUID. */
  c := result of ANSI C function memcmp() 
      applied to val1.pObject^.Guid and val2.pObject^.Guid, 
      in little-endian byte order

  /* Then by ascending attribute ID. */
  if c = 0 then
    if val1.attrTyp < val2.attrTyp then
      c := -1
    else if val1.attrTyp > val2.attrType then
      c := 1
    endif
  endif

  /* Then by ascending "is present". */
  if c = 0 then
    if not val1.fIsPresent and val2.fIsPresent then
      c := -1
    else if val1.fIsPresent and not val2.fIsPresent then
      c := 1
    endif
  endif

  /* Then by ascending referenced object objectGUID. */
  if c = 0 then
    dsname1 := Value of val1.AVal.pVal^
    dsname2 := Value of val2.AVal.pVal^

    c := result of ANSI C function memcmp() applied to dsname1.Guid
        and dsname2.Guid, in little-endian byte order
  endif

  return c
end
 
Show:
© 2014 Microsoft