Partilhar via


PROPID_M_ADMIN_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

The PROPID_M_ADMIN_QUEUE property specifies the administration queue used for system-generated acknowledgment messages.

Property ID

PROPID_M_ADMIN_QUEUE

Type Indicator

VT_LPWSTR

MQPROPVARIANT Field

pwszVal

Property Value

Format name string of the administration queue.

Remarks

You must set this property when you request acknowledgment messages from Message Queuing. Message Queuing will not return acknowledgment messages if an administration queue is not specified.

To request acknowledgment messages when a message is sent, specify PROPID_M_ADMIN_QUEUE along with PROPID_M_ACKNOWLEDGE in the MQMSGPROPS structure and call MQSendMessage.

When setting the administration queue in an HTTP message, you must set the PROPID_M_ADMIN_QUEUE property to an HTTP direct format name.

To retrieve the format name of the administration queue from a message, specify PROPID_M_ADMIN_QUEUE and PROPID_M_ADMIN_QUEUE_LEN in the MQMSGPROPS structure (the length property is used to verify that the format name was sent). 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_ADMIN_QUEUE_LEN to reallocate the format name buffer, and call the applicable function again.

Before using the returned format name, always check the length property PROPID_M_ADMIN_QUEUE_LEN to see if the administration queue format name was sent with the message. If the returned value of PROPID_M_ADMIN_QUEUE_LEN is 0 (zero), no format name was sent with the message. If the returned value is non-zero, PROPID_M_ADMIN_QUEUE contains the format name of the administration queue.

Equivalent COM Property

With COM components, the equivalent property for setting and retrieving the administration queue is MSMQMessage.AdminQueueInfo.

For information on See
How administration queues are used Administration Queues
What is in an acknowledgment message Acknowledgment Messages
HTTP direct format names Direct Format Names

Example Code

The following code fragments show how PROPID_M_ADMIN_QUEUE is specified in arrays that can be used to initialize an MQMSGPROPS structure for setting and retrieving the administration queue format name.

To Set the Administration Queue Format Name

aMsgPropId[i] = PROPID_M_ADMIN_QUEUE;               // Property ID  
aMsgPropVar[i].vt = VT_LPWSTR;                      // Type indicator  
aMsgPropVar[i].pwszVal = wszAdminFormatName;  
i++;  
aMsgPropId[i] = PROPID_M_ACKNOWLEDGE;               // Property ID  
aMsgPropVar[i].vt = VT_UI1;                         // Type indicator  
aMsgPropVar[i].bVal = MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE;  
i++;  

To Retrieve the Administration Queue Format Name

ULONG ulBufferLength = 256;  
WCHAR * wszAdminFormatNameBuffer = NULL;  
wszAdminFormatNameBuffer = (WCHAR*)malloc(ulBufferLength*sizeof(WCHAR));  
if (wszAdminFormatNameBuffer == NULL)  
{  
  return MQ_ERROR_INSUFFICIENT_RESOURCES;  
}  
memset(wszAdminFormatNameBuffer, 0, ulBufferLength*sizeof(WCHAR));  
aMsgPropId[i] = PROPID_M_ADMIN_QUEUE;               // Property ID  
aMsgPropVar[i].vt = VT_LPWSTR;                      // Type indicator  
aMsgPropVar[i].pwszVal = wszAdminFormatNameBuffer;  
i++;  
  
aMsgPropId[i] = PROPID_M_ADMIN_QUEUE_LEN;           // Property ID  
aMsgPropVar[i].vt = VT_UI4;                         // Type indicator  
aMsgPropVar[i].ulVal = ulBufferLength;  
i++;  
  
// Reallocate memory for the administration queue format name buffer if necessary.  
wszAdminFormatNameBuffer = (WCHAR*)realloc(wszAdminFormatNameBuffer, aMsgPropVar[1].ulVal*sizeof(WCHAR));  
if (wszAdminFormatNameBuffer == NULL)  
{  
  return MQ_ERROR_INSUFFICIENT_RESOURCES;  
}  
memset(wszAdminFormatNameBuffer, 0, aMsgPropVar[1].ulVal*sizeof(WCHAR));  
aMsgPropVar[0].pwszVal = wszAdminFormatNameBuffer;  // Pointer to the new buffer  

The following examples are included in Using Message Queuing.

For an example of See
Specifying the administration queue when sending a message C/C++ Code Example: Requesting Acknowledgment Messages
Testing to see if acknowledgment messages were requested C/C++ Code Example: Verifying Acknowledgment Requests

See Also

Message Properties
MQMSGPROPS
MQReceiveMessage
MQReceiveMessageByLookupId
MQSendMessage
PROPID_M_ACKNOWLEDGE
PROPID_M_ADMIN_QUEUE_LEN