3.1.6.1.2.2 Creation

  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 name 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.

    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 number of kilobytes equal to iDirectoryObject.Quota.

    mSMQQueueJournalQuota ([MS-ADA2] section 2.562)

    Integer number of kilobytes equal to 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.1.2.4.

    mSMQTransactional ([MS-ADA2] section 2.583)

    If iDirectoryObject.Transactional is TRUE,

    mSMQTransactional is 1

    Else

    mSMQTransactional is 0.

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

    Directory string transformed from iDirectoryObject.MulticastAddress.

    nTSecurityDescriptor ([MS-ADA3] section 2.37)

    SECURITY_DESCRIPTOR ([MS-DTYP] section 2.4.6) structure copied from iDirectoryObject.Security.

    mSMQBasePriority ([MS-ADA2] section 2.531)

    Integer copied from iDirectoryObject.BasePriority.

  3. The queue name MUST be modified as specified in section 3.1.6.1.2.5.

  4. A Create Object Using LDAP (section 3.1.6.12) event MUST be generated with the following arguments:

    • iParentPath := a distinguished name of the form specified for an mSMQConfiguration object in section 2.2.1, where "<computer name>" is the computer name portion of the value of iDirectoryObject.Pathname, as specified in [MS-MQMQ] section 2.1.1.

    • iChildName := FinalChildName, as computed in step 3.

    • iObjectClass := "mSMQQueue"

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

  5. If the Create Object Using LDAP event returns an rStatus that is not DirectoryOperationResult.Success, rStatus MUST be set to the rStatus returned by the Create Object Using LDAP event, rObjectGUID is undefined, and processing MUST end. Otherwise, rObjectGuid is set to the rObjectGuid returned by the Create Object Using LDAP event.

  6. rStatus MUST be set to DirectoryOperationResult.Success, and processing MUST end.