PROPID_M_XACT_STATUS_QUEUE
Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista
(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
PROPID_M_XACT_STATUS_QUEUE
Type Indicator
VT_LPWSTR
MQPROPVARIANT Field
pwszVal
Property Value
Format name of transaction status queue.
Remarks
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 | PROPID_M_ACKNOWLEDGE |
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)
{
return MQ_ERROR_INSUFFICIENT_RESOURCES;
}
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
i++;
aMsgPropId[i] = PROPID_M_XACT_STATUS_LEN; // Property ID
aMsgPropVar[i].vt = VT_UI4; // Type indicator
aMsgPropVar[i].ulVal = ulBufferLength;
i++;
// Reallocate memory for the transaction status queue format name buffer if necessary.
wszStatusQueueBuffer = (WCHAR*)realloc(wszStatusQueueBuffer, aMsgPropVar[1].ulVal*sizeof(WCHAR));
if (wszStatusQueueBuffer == NULL)
{
return MQ_ERROR_INSUFFICIENT_RESOURCES;
}
memset(wszStatusQueueBuffer, 0, aMsgPropVar[1].ulVal*sizeof(WCHAR));
aMsgPropVar[0].pwszVal = wszStatusQueueBuffer; // Pointer to the new buffer
See Also
Message Properties
MQMSGPROPS
MQReceiveMessage
MQReceiveMessageByLookupId
MSMQMessage.TransactionStatusQueueInfo
PROPID_M_XACT_STATUS_QUEUE_LEN