The PROPID_M_MSGID property indicates the Message Queuing-generated identifier of the message.
VT_VECTOR | VT_UI1
20-byte Message Queuing-generated message identifier.
Message Queuing generates a 20-byte message identifier when the message is sent. This identifier is composed of the 16-byte globally unique identifier (GUID) of the computer that sent the message plus a 4-byte sequential number (DWORD) that uniquely identifies each message on the computer. By combining these two components, the message identifier is unique within your enterprise.
Message Queuing generates message identifiers for all messages, including acknowledgment messages generated by Message Queuing and connector applications. When an acknowledgment message is created, the identifier of the original message can be found in the PROPID_M_CORRELATIONID property of the acknowledgment message.
An SRMP message can be sent to a Message Queuing queue from a non-Message Queuing system without a message identifier. However, because Message Queuing needs this information, it adds a default message identifier to every SRMP message arriving without a message identifier. The GUID portion (16 bytes) of the default identifier equals GUID_NULL (00000000-0000-0000-0000-000000000000), and the DWORD portion (the remaining 4 bytes) equals 1.
The message identifier is an array of bytes that can be read by either the sending or receiving application. To retrieve the identifier of a message, specify PROPID_M_MSGID and a buffer consisting of 20 unsigned characters to receive its value in the MQMSGPROPS structure.
|The buffer must consist of exactly 20 unsigned characters. Specifying either a smaller or larger buffer will result in an error.|
This property can also be used when sending response messages. For example, the application creating the response message can set the correlation identifier (PROPID_M_CORRELATIONID) of the response message to the identifier of the message it read from the queue. This gives the application reading the response message a way to know which message the response is referring to.
Equivalent COM Property
With COM components, the equivalent property for retrieving the message identifier is MSMQMessage.Id.
The following code fragment shows how PROPID_M_MSGID is specified in arrays that can be used to initialize an MQMSGPROPS structure for retrieving the identifier of a message.
UCHAR rgucMsgID[PROPID_M_MSGID_SIZE]; aMsgPropID[i] = PROPID_M_MSGID; // Property ID aMsgPropVar[i].vt = VT_VECTOR | VT_UI1; // Type indicator aMsgPropVar[i].caub.pElems = rgucMsgID; aMsgPropVar[i].caub.cElems = PROPID_M_MSGID_SIZE; i++
The following example is included in Using Message Queuing.
|For an example of||See|
Retrieving the message identifier when creating a response message