Export (0) Print
Expand All
Expand Minimize

5.6 AddSubRef

procedure AddSubRef(childNC: DSName): DWORD

Informative summary of behavior: This procedure creates a sub-ref object to the NC named by childNC, if appropriate.

parentNC, parentObj: DSName
srAtt: ENTINF
err: DWORD

err:= 0

/* Find the parent NC */
parentNC := GetObjectNC(ChildNC)

/* If the parent NC is not instantiated locally, return */
if not FullReplicaExists(parentNC) and
   not PartialGCReplicaExists(parentNC) then
  return err
endif
/* If child does not exist, create it */

if !ObjExists(childNC) then
  /* Create a subordinate reference object */
  ENTINF_SetValue(srAtt, instanceType,
    {IT_NC_HEAD | IT_UNINSTANT | IT_NC_ABOVE}, dc.prefixTable)
  ENTINF_SetValue(srAtt, objectClass, top,prefixTable)
  ENTINF_SetValue(srAtt, objectCategory,SchemaObj(top), dc.prefixTable)
  ENTINF_SetValue(srAtt, distinguishedName, childNC,prefixTable)
  err := PerformAddOperation(srAtt,childNC, dc.prefixTable, TRUE)
  if(err != 0)
    return err
  endif
else
  if (childNC!isDeleted)
     /*The cross-ref is being undeleted. Undelete the sub-ref object also.*/
     UndeleteObject(childNC)
  endif
endif

/* Ensure that the subordinate reference object is listed in the parent's
   subRefs  attribute*/
if (not childNC in parentNC!subRefs) then
   parentNC!subRefs := parentNC!subRefs + {childNC}
endif
return err
 
Show:
© 2014 Microsoft