Windows Dev Center

Expand Minimize


(Read-only.) The PROPID_M_XACT_STATUS_QUEUE property contains a format name that identifies the transaction status queue on the source computer. It is only used by connector applications when receiving transactional messages sent to a foreign queue.

Property ID


Type Indicator




Property Value

Format name of transaction status queue.


PROPID_M_XACT_STATUS_QUEUE is set by Message Queuing. Connector applications can then retrieve the format name to send positive (read receipt) or negative acknowledgment messages back to the sending application. The transaction status queue should receive these acknowledgments even if the sending application does not request other acknowledgments.

To retrieve the format name of the transaction status queue, the connector application must specify PROPID_M_XACT_STATUS_QUEUE and PROPID_M_XACT_STATUS_QUEUE_LEN in the MQMSGPROPS structure, and then call MQReceiveMessage or MQReceiveMessageByLookupId and examine the returned values.

If MQReceiveMessage or MQReceiveMessageByLookupId fails, returning an MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL error, use the returned value of PROPID_M_XACT_STATUS_QUEUE_LEN to reallocate the format name buffer and call the applicable function again.

Equivalent COM Property

With COM components, the equivalent property for retrieving the transaction status queue is MSMQMessage.TransactionStatusQueueInfo.

For information on See

Requesting other types of acknowledgment messages


Transactions and connector applications

Using Connector Services in a Transaction

Example Code

The following code fragment shows how PROPID_M_XACT_STATUS_QUEUE and PROPID_M_XACT_STATUS_QUEUE_LEN are specified in arrays that can be used to initialize an MQMSGPROPS structure when retrieving the format name of the transaction status queue.

ULONG ulBufferLength = 256;
WCHAR * wszStatusQueueBuffer = NULL;
wszStatusQueueBuffer = (WCHAR*)malloc(ulBufferLength*sizeof(WCHAR));
if (wszStatusQueueBuffer == NULL)
memset(wszStatusQueueBuffer, 0, ulBufferLength*sizeof(WCHAR));
aMsgPropId[i] = PROPID_M_XACT_STATUS_QUEUE;       // Property ID
aMsgPropVar[i].vt = VT_LPWSTR;                    // Type indicator
aMsgPropVar[i].pwszVal = wszStatusQueueBuffer;    // Application-defined buffer

aMsgPropId[i] = PROPID_M_XACT_STATUS_LEN;       // Property ID
aMsgPropVar[i].vt = VT_UI4;                      // Type indicator
aMsgPropVar[i].ulVal = ulBufferLength;

// Reallocate memory for the transaction status queue format name buffer if necessary.
wszStatusQueueBuffer = (WCHAR*)realloc(wszStatusQueueBuffer, aMsgPropVar[1].ulVal*sizeof(WCHAR));
if (wszStatusQueueBuffer == NULL)
memset(wszStatusQueueBuffer, 0, aMsgPropVar[1].ulVal*sizeof(WCHAR));
aMsgPropVar[0].pwszVal = wszStatusQueueBuffer;  // Pointer to the new buffer

See Also

© 2015 Microsoft