3.1.6.7.2.2 Write

  1. If iAttributeList was not provided as an argument, an iAttributeList MUST be constructed that MUST contain the names of all Queue ADM element attributes listed in section 3.1.6.20.2.

  2. Let QueueAttributeList be a list of mSMQQueue attribute names, initialized to be empty. For each mSMQQueue attribute listed in the following table, if the corresponding Queue ADM element attribute appears in iAttributeList and that attribute is populated in iDirectoryObject, add the mSMQQueue attribute name to QueueAttributeList and compute the value for the attribute as shown. Queue ADM element attribute names that appear in iAttributeList but do not appear in the following table or in subsections referenced by the table MUST be ignored in this step.

    mSMQQueue attribute

    Attribute value computation

    mSMQLabelEx ([MS-ADA2] section 2.550)

    Directory string transformed from iDirectoryObject.Label.

    mSMQQueueType ([MS-ADA2] section 2.565)

    GUID copied from iDirectoryObject.Type.

    mSMQJournal ([MS-ADA2] section 2.547)

    If iDirectoryObject.Journaling is TRUE,

    mSMQJournal is 1

    Else

    mSMQJournal is 0.

    mSMQQueueQuota ([MS-ADA2] section 2.564)

    Integer copied from iDirectoryObject.Quota.

    mSMQQueueJournalQuota ([MS-ADA2] section 2.548)

    Integer copied from iDirectoryObject.JournalQuota.

    mSMQAuthenticate ([MS-ADA2] section 2.530)

    If iDirectoryObject.Authentication is TRUE,

    mSMQAuthenticate is 1

    Else

    mSMQAuthenticate is 0.

    mSMQPrivacyLevel ([MS-ADA2] section 2.560)

    Computed from iDirectoryObject.PrivacyLevel. See section 3.1.6.7.2.4.

    MSMQ-MulticastAddress ([MS-ADA2]] section 2.527)

    Directory string transformed from iDirectoryObject.MulticastAddress.

    mSMQBasePriority ([MS-ADA2] section 2.531)

    Integer copied from iDirectoryObject.BasePriority.

  3. Let WriteGUID be a distinguished name, initialized to be empty. If iDirectoryObject.Identifier is populated, the value of iDirectoryObject.Identifier MUST be copied to WriteGUID.

  4. Let WriteDN be a distinguished name, initialized to be empty.

  5. If iDirectoryObject.FullPath is populated, the value of iDirectoryObject.FullPath MUST be copied to WriteDN.

  6. If WriteDN is empty and iDirectoryObject.DirectoryPath is populated, the value of WriteDN MUST be the value of iDirectoryObject.DirectoryPath with the prefix "LDAP://" removed.

  7. If WriteDN is empty and iDirectoryObject.Pathname is populated, the value of WriteDN MUST be a distinguished name for an mSMQQueue object, constructed according to the format specified in section 2.2.1, where "<computer name>" is the ComputerName portion of the value of iDirectoryObject.Pathname and "<queue name>" is the QueueName portion of the value of iDirectoryObject.Pathname, as specified in [MS-MQMQ] section 2.1.1, and "<queue name>" is further modified as specified in section 3.1.6.7.2.5.

  8. A Set Object Properties Using LDAP (section 3.1.6.16) event MUST be generated with the following arguments:

    • iPath := WriteDN

    • iGuid := WriteGUID

    • iAttributes := a list of name-value pairs consisting of the attribute names in QueueAttributeList and the corresponding values, as computed in step 2.

  9. If the Set Object Properties Using LDAP event returns an rStatus that is not DirectoryOperationResult.Success, rStatus MUST be set to the rStatus returned by the Set Object Properties Using LDAP event, and processing MUST end.