共用方式為


PROPID_M_EXTENSION_LEN

 

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_EXTENSION_LEN property specifies the length of the information in the PROPID_M_EXTENSION property.

Property ID

PROPID_M_EXTENSION_LEN

Type Indicator

VT_UI4

MQPROPVARIANT Field

ulVal

Property Value

The size (in bytes) of the extension information specified by PROPID_M_EXTENSION.

Remarks

PROPID_M_EXTENSION_LEN is used only by the receiving application. It is used whenever the receiving application specifies PROPID_M_EXTENSION in the MQMSGPROPS structure.

To retrieve extension information, set PROPID_M_EXTENSION and PROPID_M_EXTENSION_LEN in the MQMSGPROPS structure. Then call MQReceiveMessage or MQReceiveMessageByLookupId and examine the returned values. When retrieving this property, the type indicator can be set to VT_UI4 or VT_NULL. If you set the type indicator to VT_NULL, Message Queuing automatically changes the type indicator to VT_UI4 during the function call.

When the function call succeeds, first test the returned value of PROPID_M_EXTENSION_LEN to see if any extension information exists. A returned value of 0 indicates that no information was sent by the sending application. A non-0 returned value indicates the extension information was returned by PROPID_M_EXTENSION.

If MQReceiveMessage or MQReceiveMessageByLookupId fails, returning an MQ_ERROR_BUFFER_OVERFLOW error, use the returned value of PROPID_M_EXTENSION_LEN to reallocate the extension information buffer and call the applicable function again.

Equivalent COM Property

This property is not needed when you are using COM components.

Example Code

The following code fragment shows how PROPID_M_EXTENSION_LEN and PROPID_M_EXTENSION are specified in arrays that can be used to initialize an MQMSGPROPS structure for retrieving extended information.

ULONG ulExtInfoBufferSize = 1024;  
UCHAR * pucExtInfoBuffer = NULL;  
pucExtInfoBuffer = (UCHAR*)malloc(ulExtInfoBufferSize);  
if (pucExtInfoBuffer == NULL)  
{  
  return MQ_ERROR_INSUFFICIENT_RESOURCES;  
}  
memset(pucExtInfoBuffer, 0, ulExtInfoBufferSize);  
aMsgPropId[i] = PROPID_M_EXTENSION_LEN;     // Property ID  
aMsgPropVar[i].vt = VT_NULL;                // Type indicator  
i++;  
  
aMsgPropId[i] = PROPID_M_EXTENSION;         // Property ID  
aMsgPropVar[i].vt = VT_VECTOR | VT_UI1;     // Type indicator  
aMsgPropVar[i].caub.pElems = (UCHAR*)pucExtInfoBuffer;  
aMsgPropVar[i].caub.cElems = ulExtInfoBufferSize;  
i++;  

See Also

Message Properties
MQMSGPROPS
MQReceiveMessage
MQReceiveMessageByLookupId
PROPID_M_EXTENSION