3.1.6.7 Begin Directory Lookup

This event MUST be generated with the following arguments:

Return Values:

The server MUST perform the following actions to process this event:

  • Create a new LookupIteratorState ADM element instance, which is referred to as newStateObject.

  • Examine the property identifiers in iColumnSet.aCol to determine the directory object type for which to search. Directory object types are defined in section 2.2.8, and the association by type with property identifiers is defined in section 2.2.10.1. Store the directory object type in newStateObject.ObjectType. If the property identifiers belong to more than one directory object type, perform no further processing and return an error.

  • Populate the newStateObject.PropertyList with the property identifiers from iColumnSet.aCol.

  • The server SHOULD<131> generate a Read Directory Begin ([MS-MQDSSM] section 3.1.6.4) event with the following arguments:

    • iDirectoryObjectType := the string representation of newStateObject.ObjectType as defined in the following table. If the object type is not in the table, take no further action, and return an error.

      ObjectType

      Object Type (string)

      MQDS_QUEUE

      "Queue"

      MQDS_MACHINE

      "QueueManager"

      MQDS_SITE

      "Site"

      MQDS_ENTERPRISE

      "Enterprise"

      MQDS_USER

      "User"

      MQDS_ROUTINGLINK

      "RoutingLink"

    • iFilter := An array containing the attribute-filter expression ([MS-MQDMPR] section 3.1.7.1.20) of each MQPROPERTYRESTRICTION element in iRestriction. The directory ADM attribute name is determined by the prop attribute of the MQPROPERTYRESTRICTION element, using the mapping defined in section 3.1.4.21.8.1 for the corresponding object type.

    • iAttributeList := An array containing the directory ADM attributes that are determined by the property identifiers in iColumnSet.aCol, using the mapping defined in section 3.1.4.21.8.1 for the corresponding object type.

    • iAttributeSortOrder := An array containing the attribute-sort-order values ([MS-MQDSSM] section 3.1.6.4) to sort the result. For each element in iAttributeList, add one attribute-sort-order value, referred to as sortValue, and initialize it as follows:

      • SortPriority := the index of the MQSORTKEY (section 2.2.14) structure element in iSort whose propColumn matches the property identify of the ADM attribute. If no such element is found in iSort, set it to zero.

      • SortAscending := True if the dwOrder member of the found MQSORTKEY structure element  is QUERY_SORTASCEND; False otherwise.

  • If the preceding event does not return DirectoryOperationResult.Success, take no further action, and return an error.

  • Set newStateObject.LookupState to the returned rQueryHandle.

  • Set rLookupDescriptor to newStateObject.

  • Set rStatus to MQ_OK.