2.2.7 QUEUE_FORMAT

The QUEUE_FORMAT structure describes the type of queue being managed and an identifier for that queue.

 typedef struct __QUEUE_FORMAT {
   unsigned char m_qft;
   unsigned char m_SuffixAndFlags;
   unsigned short m_reserved;
   [switch_is(m_qft)] union {
     [case(QUEUE_FORMAT_TYPE_UNKNOWN)] 
             ;
     [case(QUEUE_FORMAT_TYPE_PUBLIC)] 
       GUID m_gPublicID;
     [case(QUEUE_FORMAT_TYPE_PRIVATE)] 
       OBJECTID m_oPrivateID;
     [case(QUEUE_FORMAT_TYPE_DIRECT)] 
       [string] wchar_t* m_pDirectID;
     [case(QUEUE_FORMAT_TYPE_MACHINE)] 
       GUID m_gMachineID;
     [case(QUEUE_FORMAT_TYPE_CONNECTOR)] 
       GUID m_GConnectorID;
     [case(QUEUE_FORMAT_TYPE_DL)] 
       DL_ID m_DlID;
     [case(QUEUE_FORMAT_TYPE_MULTICAST)] 
       MULTICAST_ID m_MulticastID;
     [case(QUEUE_FORMAT_TYPE_SUBQUEUE)] 
       [string] wchar_t* m_pDirectSubqueueID;
   };
 } QUEUE_FORMAT;

m_qft: The type of queue format name. It MUST be set to one of the values of QUEUE_FORMAT_TYPE. It is used as a union discriminant in the QUEUE_FORMAT structure.

m_SuffixAndFlags: This member is broken into two subfields: Suffix Type is located in the 4 least-significant bits, and Flags is located in the 4 most-significant bits.

 0

 1

 2

 3

 4

 5

 6

 7

Flags

Suffix type

Flags

Meaning

QUEUE_FORMAT_FLAG_NOT_SYSTEM

0x00

The specified queue is not a system queue.

QUEUE_FORMAT_FLAG_SYSTEM

0x80

The specified queue is a system queue.

Suffix type

Meaning

QUEUE_SUFFIX_TYPE_NONE

0x00

No suffix is specified. The Flags subfield MUST be set to 0x00. The m_qft member MUST NOT be set to 0x04.

QUEUE_SUFFIX_TYPE_JOURNAL

0x01

A journal suffix. The Flags subfield MUST be set to 0x80. The m_qft member MUST NOT be set to 0x05, 0x06, or 0x07.

QUEUE_SUFFIX_TYPE_DEADLETTER

0x02

A dead-letter suffix. The Flags subfield MUST be set to 0x80. The m_qft member MUST NOT be set to 0x01, 0x02, 0x05, 0x06, or 0x07.

QUEUE_SUFFIX_TYPE_DEADXACT

0x03

A transacted dead-letter suffix. The Flags subfield MUST be set to 0x80. The m_qft member MUST be set to 0x03 or 0x04.

QUEUE_SUFFIX_TYPE_XACTONLY

0x04

A transaction-only suffix. The m_qft member MUST be set to 0x05.

QUEUE_SUFFIX_TYPE_SUBQUEUE

0x05

A subqueue suffix. The Flags subfield MUST be 0x00. The m_qft member MUST be set to 0x08.

m_reserved: The integer value used for padding. The client SHOULD set this value to 0. The server MUST not use it.

(unnamed union): Based on the value of m_qft.

m_gPublicID: A GUID (as specified in [MS-DTYP] section 2.3.4) of a public queue. Selected when m_qft is set to 0x01.

m_oPrivateID: An OBJECTID of a private queue; members MUST be used as specified in OBJECTID. Selected when m_qft is set to 0x02.

m_pDirectID: A direct format name (as specified in section 2.1.2) with the "DIRECT=" prefix removed. It is selected when m_qft is set to 0x03.

m_gMachineID: The GUID (as specified in [MS-DTYP] section 2.3.4) of a machine. It is selected when m_qft is set to 0x04.

m_GConnectorID: The GUID (as specified in [MS-DTYP] section 2.3.4) of a connector queue. It is selected when m_qft is set to 0x05.

m_DlID: The identifier of a distribution list. It is selected when m_qft is set to 0x06.

m_MulticastID: A MULTICAST_ID (section 2.2.10) which specifies a multicast address and port. It is selected when m_qft is set to 0x07.

m_pDirectSubqueueID: The identifier of a subqueue. Selected when m_qft is set to 0x08.

The value MUST conform to the ABNF for DirectName and contain the optional <Subqueue> element, as specified in section 2.1.

The full QUEUE_FORMAT IDL is specified in [MS-MQMR] Appendix A (section 6).