3.2.6.1.4 RoutingLink
The MQDS client MUST perform the following actions:
The arguments supplied to the Create Directory Object event MUST meet the following conditions. If any of these conditions are violated, processing of the event MUST end. rStatus MUST be set to DirectoryOperationResult.GenericError and rObjectGUID is undefined.
If iAttributeList is provided, the names Site1Identifier, Site2Identifier, and ActualCost MUST be present in the list.
The iDirectoryObject.Site1Identifier, iDirectoryObject.Site2Identifier, and iDirectoryObject.ActualCost attributes MUST be populated.
If iAttributeList was not provided as an argument, then an iAttributeList MUST be constructed that MUST contain the names of all RoutingLink directory attributes listed in [MS-MQDMPR] section 3.1.1.8.
The aProp and apVar arguments for the S_DSCreateObject method (section 3.1.4.4) MUST be computed. For each property identifier listed in the following table, if the corresponding RoutingLink attribute name appears in iAttributeList and that attribute is populated in iDirectoryObject, add the property identifier to aProp, add a PROPVARIANT to apVar that is set to the correct type for the property and contains in the correct field the computed value for the property, as shown in the following table. RoutingLink attribute names that appear in iAttributeList but do not appear in the following table or subsections referenced by the table MUST be ignored.
Property Identifier
Property value computation
PROPID_L_NEIGHBOR1 ([MS-MQMQ] section 2.3.7.1)
GUIDs copied from iDirectoryObject.Site1Identifier.
PROPID_L_NEIGHBOR2 ([MS-MQMQ] section 2.3.7.2)
GUIDs copied from iDirectoryObject.Site2Identifier.
PROPID_L_GATES ([MS-MQMQ] section 2.3.7.13)
List of GUIDs copied from iDirectoryObject.SiteGateIdentifierList.
PROPID_L_NEIGHBOR1_DN ([MS-MQMQ] section 2.3.7.8)
UNICODE string copied from iDirectoryObject.Site1FullPath.
PROPID_L_NEIGHBOR2_DN ([MS-MQMQ] section 2.3.7.9)
UNICODE string copied from iDirectoryObject.Site2FullPath.
PROPID_L_DESCRIPTION ([MS-MQMQ] section 2.3.7.10)
UNICODE string copied from iDirectoryObject.Description.
PROPID_L_ACTUAL_COST ([MS-MQMQ] section 2.3.7.12)
Integer copied from iDirectoryObject.ActualCost.
Other input arguments for the S_DSCreateObject method MUST be computed:
dwObjectType MUST be MQDS_ROUTINGLINK.
pwcsPathName MUST point to a buffer containing a string composed from the values of iDirectoryObject.Site1Identifier and iDirectoryObject.Site2Identifier. The two GUIDs MUST be converted to curly braced GUIDs string form ([MS-DTYP] section 2.3.4.3), then compacted by removing all characters that are not hexadecimal digits, and finally the string for Site2 MUST be appended to the string for Site1.
SecurityDescriptor MUST be set to NULL.
Other arguments MUST be set up as described in section 3.1.4.4.
The S_DSCreateObject method MUST be called with the given arguments. If the return value is not MQ_OK, processing MUST end. rStatus MUST be set to DirectoryOperationResult.GenericError and rObjectGUID is undefined.
rObjectGUID MUST be set to the GUIDs returned in the buffer pointed to by the pObjGuid argument of S_DSCreateObject.
Processing MUST end. rStatus MUST be set to DirectoryOperationResult.Success.