The name of the queue is modified before the mSMQQueue object is created. The modified name is used to create the object. The modification is performed according to the following algorithm:

  1. Let FinalChildName and FinalExtension be Unicode strings, initialized to be empty.

  2. Let QName be a Unicode string that MUST be the "<queue name>" portion of iDirectoryObject.Pathname, as specified in section 2.2.1.

  3. A Unicode backslash ('\') MUST be inserted in QName before every instance of a character belonging to this set of special characters: '\n', '/', '#', '>', '<', '=', and '\x0A'.

  4. If the length of QName does not exceed 63 characters, the value of QName MUST be copied to FinalChildName. Otherwise, the first 55 characters of QName MUST be copied to FinalChildName; the remaining characters of QName MUST be copied to FinalExtension; and a nine-character extension MUST be added to the end of FinalChildName, which MUST be exactly 64 characters long after adding the extension. The extension consists of a Unicode dash ('-') followed by an eight-character hash string that is calculated from the values of the Unicode characters in QName as specified in section 2.2.5.

  5. If FinalExtension is not empty, the mSMQQueueNameExt attribute ([MS-ADA2] section 2.563) MUST be added to QueueAttributeList, with the value of FinalExtension transformed to a directory string as the associated value.