Windows Dev Center

Expand Minimize

PROPID_M_XACT_STATUS_QUEUE

(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

Show:
© 2015 Microsoft