<div class="content" name="MESSAGE_CLASS_VALUES" uuid="bb697835-fe47-4ec3-8457-6c06880a2138"><p>A message class identifier is used to indicate the type of a
<a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_85c78cf0-1fb6-4e5d-85f5-a2e9f58a6b9e" data-linktype="relative-path">message</a>. In some cases
the class identifier can also indicate that the message is generated as a
response to an action on another message such as its receipt by a higher-layer
messaging application or a delivery failure. This other message is referred to
as the original message in the text that follows. The sender of the original
message is referred to as the original sender in the text that follows.</p><p> The <b>MESSAGE_CLASS_VALUES</b> enumeration identifies the
predefined message types.</p><p>Alternatively, the sending application can set the type of a
message to a custom value by setting one or more bits of the mask 0xE1FF and by
leaving the remaining bits as zero.</p><dl>
<dd>
<div><pre> typedef  enum 
 {
   MQMSG_CLASS_NORMAL = 0x0000,
   MQMSG_CLASS_REPORT = 0x0001,
   MQMSG_CLASS_ACK_REACH_QUEUE = 0x0002,
   MQMSG_CLASS_ORDER_ACK = 0x00ff,
   MQMSG_CLASS_ACK_RECEIVE = 0x4000,
   MQMSG_CLASS_NACK_BAD_DST_Q = 0x8000,
   MQMSG_CLASS_NACK_DELETED = 0x8001,
   MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT = 0x8002,
   MQMSG_CLASS_NACK_Q_EXCEED_QUOTA = 0x8003,
   MQMSG_CLASS_NACK_ACCESS_DENIED = 0x8004,
   MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED = 0x8005,
   MQMSG_CLASS_NACK_BAD_SIGNATURE = 0x8006,
   MQMSG_CLASS_NACK_BAD_ENCRYPTION = 0x8007,
   MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q = 0x8009,
   MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG = 0x800A,
   MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER = 0x800B,
   MQMSG_CLASS_NACK_Q_DELETED = 0xC000,
   MQMSG_CLASS_NACK_Q_PURGED = 0xC001,
   MQMSG_CLASS_NACK_RECEIVE_TIMEOUT = 0xC002,
   MQMSG_CLASS_NACK_RECEIVE_REJECTED = 0xC004
 } MESSAGE_CLASS_VALUES;
</pre></div>
</dd></dl><p><b>MQMSG_CLASS_NORMAL:  </b>Indicates the original message
sent on behalf of a higher-layer messaging application.</p><p><b>MQMSG_CLASS_REPORT:  </b>Indicates a report message used
to track delivery of sent messages. For more information, see <a href="../ms-mqqb/85498b96-f2c8-43b3-a108-c9d6269dc4af" data-linktype="relative-path">[MS-MQQB]</a>
section <a href="../ms-mqqb/c056032e-5eec-4d59-a2d9-d3096b6c22e9" data-linktype="relative-path">3.1.5.8.9</a>.</p><p><b>MQMSG_CLASS_ACK_REACH_QUEUE:  </b>The class is used by
administration acknowledgment messages.</p><p>Indicates that the original message was delivered to its
destination <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_c1a6400d-703b-4f9a-a74c-40f1487978d9" data-linktype="relative-path">queue</a>.</p><p><b>MQMSG_CLASS_ORDER_ACK:  </b>The class is used to
acknowledge in-order receipt of an original <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_3b80e01d-5155-4378-b692-82122af044aa" data-linktype="relative-path">transactional message</a>. This
acknowledgment MUST be sent from the final destination <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_476f10ed-08f0-4887-b583-59d5cf909979" data-linktype="relative-path">queue manager</a> to the
original sender.</p><p><b>MQMSG_CLASS_ACK_RECEIVE:  </b>The class is used by
administration acknowledgment messages.</p><p>Indicates that the original message was retrieved by
a receiving application from the destination queue.</p><p><b>MQMSG_CLASS_NACK_BAD_DST_Q:  </b>Indicates that
the destination queue is not available to the original sender.</p><p><b>MQMSG_CLASS_NACK_DELETED:  </b>Indicates that the
original message was deleted by an administrative action before reaching the
destination queue.</p><p><b>MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT:  </b>Indicates
that the original message did not reach the destination queue. This message can
be generated by expiration of either the UserMessage.UserHeader.TimeToBeReceived
time or UserMessage.BaseHeader.TimeToReachQueue time before the original
message reaches the destination queue.</p><p><b>MQMSG_CLASS_NACK_Q_EXCEED_QUOTA:  </b>Indicates
that the original message was rejected by the destination queue manager because
the destination queue exceeded <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_862b92e8-0272-4816-ae0d-33d60469dee0" data-linktype="relative-path">Quota</a>.</p><p><b>MQMSG_CLASS_NACK_ACCESS_DENIED:  </b>Indicates
that the access rights for placing the original message in the destination
queue were not allowed for the sender.</p><p><b>MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED:  </b>Indicates
that the original message was rejected because it exceeded the maximum routing
hop count.</p><p><b>MQMSG_CLASS_NACK_BAD_SIGNATURE:  </b>Indicates
that the digital signature attached to the original message is not valid.</p><p><b>MQMSG_CLASS_NACK_BAD_ENCRYPTION:  </b>Indicates
that the destination queue manager could not decrypt the original message.</p><p><b>MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q:  </b>Indicates that
the original transactional message was sent to a nontransactional queue.</p><p><b>MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG:  </b>Indicates
that the original <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_50ca4931-752e-44fc-917e-481572393e81" data-linktype="relative-path">nontransactional
message</a> was sent to a <a href="87486cd1-6ef0-4b58-93f9-f9b97b2279c4#gt_49b6c0e7-59fc-40af-b627-df18c392327b" data-linktype="relative-path">transactional
queue</a>.</p><p><b>MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER:  </b>Indicates
that the encryption provider requested in the original message is not supported
by the destination.</p><p><b>MQMSG_CLASS_NACK_Q_DELETED:  </b>Indicates that the queue
was deleted before the original message could be read from the queue.</p><p><b>MQMSG_CLASS_NACK_Q_PURGED:  </b>Indicates that the queue
was purged and the original message no longer exists.</p><p><b>MQMSG_CLASS_NACK_RECEIVE_TIMEOUT:  </b>Indicates that the
original message was placed in the destination queue but was not retrieved from
the queue before its time-to-be-received timer expired.</p><p><b>MQMSG_CLASS_NACK_RECEIVE_REJECTED:  </b>Indicates that
the message was rejected by a receiving application.</p></div>