Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
This property contains the body of the message.
- Type Indicator
-
VT_VECTOR | VT_UI1
- PROPVARIANT Field
-
caub
- Property Values
-
Body of the message.
Remarks
The body of a message can consist of any type of information.
The sending and receiving applications are responsible to understand the type of information in the body.
For example, if the sending application sends a binary file with an internal structure, the receiving application is responsible to know how to decipher what was sent.
You can use the PROPID_M_BODY_TYPEproperty to indicate what type of information is in the message body.
It is recommended that the sending application set PROPID_M_BODY_TYPE when sending messages.
If PROPID_M_BODY_TYPE is not set, the application reading the message should assume the message is an array of bytes. The MSMQ COM implementation does this.
Each MSMQ message can have no more than 4 MB of data.
To set the body of a message, specify PROPID_M_BODY and PROPID_M_BODY_TYPE in the MQMSGPROPSstructure and call MQSendMessage.
To retrieve the message body from a message, specify PROPID_M_BODY_SIZEand PROPID_M_BODY in the MQMSGPROPSstructure. Then, call MQReceiveMessageand examine the returned value.
Before using the returned value of PROPID_M_BODY, always inspect the returned value of PROPID_M_BODY_SIZE to see if a message body was sent with the message.
A returned value of 0 indicates that no body was attached to the message.
A nonzero returned value indicates that the body of the message was returned by PROPID_M_BODY.
The MSMQ COM implementation supports the following specific types:
- VT_I2
- VT_UI2
- VT_I4
- VT_UI4
- VT_R4
- VT_R8
- VT_CY
- VT_DATE
- VT_BOOL
- VT_I1
- VT_UI1
- VT_BSTR
- VT_ARRAY
- VT_STREAMED_OBJECT, which indicates a serialized object that
supports
IPersistStreamand
IPersistStorage
- VT_STORED_OBJECT, which indicates a serialized object that
supports
IPersistStreamand
IPersistStorage
Many persistent objects, such as all Microsoft Office documents, can be sent as MSMQ messages.
Some programming tools, such as Microsoft® Visual Basic® 6.0, can create user-defined objects that support the IPersistStreamor IPersistStorageinterface.
When you pass fixed-size messages between the sending and receiving application and fixed-size messages are the only type of message passed, you can allocate a fixed-size buffer for receiving the message body without caring about body size.
Examples
The following examples show how PROPID_M_BODY is specified in the MQMSGPROPSstructure when setting and retrieving the message body.
To send the message body
Copy Code | |
---|---|
WCHAR wszMessageBody[] = L"Test Message."; MsgProps.aPropID[i] = PROPID_M_BODY; // Property ID MsgProps.aPropVar[i].vt = VT_VECTOR|VT_UI1; // Type indicator MsgProps.aPropVar[i].caub.pElems = (LPBYTE)wszMessageBody; MsgProps.aPropVar[i].caub.cElems = sizeof(wszMessageBody); i++; MsgProps.aPropID[i] = PROPID_M_BODY_TYPE; // Property ID MsgProps.aPropVar[i].vt = VT_UI4; // Type indicator MsgProps.aPropVar[i].ulVal = dwBodyType; i++; |
To retrieve the message body
Copy Code | |
---|---|
MsgProps.aPropID[i] = PROPID_M_BODY_SIZE; // Property ID MsgProps.aPropVar[i].vt = VT_UI4; // Type indicator i++; DWORD dwBodyBufferSize = 1024; UCHAR *pucBodyBuffer = (UCHAR *)malloc(dwBodyBufferSize); MsgProps.aPropID[i] = PROPID_M_BODY; // Property ID MsgProps.aPropVar[i].vt = VT_VECTOR|VT_UI1; // Type indicator MsgProps.aPropVar[i].caub.pElems = (UCHAR*)pucBodyBuffer; MsgProps.aPropVar[i].caub.cElems = dwBodyBufferSize; i++; |
Note: |
---|
OS versions prior to 2.12 require the MSMQ add-on pack. |
Requirements
Header | mq.h |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
MQReceiveMessageMQSendMessage
PROPID_M_BODY_SIZE
PROPID_M_BODY_TYPE
MQMSGPROPS