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