<div class="content" name="CACTransferBufferV1" uuid="08791447-2c3c-48d4-98ab-ce9dd28a9509"><p>The CACTransferBufferV1 structure is used to send and
receive <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_85c78cf0-1fb6-4e5d-85f5-a2e9f58a6b9e" data-linktype="relative-path">messages</a> via <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_70ce3665-ae64-44b4-88fe-7c1dcdcd5417" data-linktype="relative-path">MSMQ</a>.</p><p>Following is the layout of the CACTransferBufferV1 structure
with <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_73177eec-4092-420f-92c5-60b2478df824" data-linktype="relative-path">IDL</a> annotations
followed by descriptions of the structure members.</p><dl>
<dd>
<div><pre> typedef struct CACTransferBufferV1 {
   [range(0,2)] DWORD uTransferType;
   [switch_is(uTransferType)] union {
     [case(CACTB_SEND)] 
       struct {
       QUEUE_FORMAT* pAdminQueueFormat;
       QUEUE_FORMAT* pResponseQueueFormat;
     } Send;
     [case(CACTB_RECEIVE)] 
       struct {
       DWORD RequestTimeout;
       DWORD Action;
       DWORD Asynchronous;
       DWORD Cursor;
       [range(0,1024)] DWORD ulResponseFormatNameLen;
       [size_is(,ulResponseFormatNameLen)] 
         WCHAR** ppResponseFormatName;
       DWORD* pulResponseFormatNameLenProp;
       [range(0,1024)] DWORD ulAdminFormatNameLen;
       [size_is(,ulAdminFormatNameLen)] 
         WCHAR** ppAdminFormatName;
       DWORD* pulAdminFormatNameLenProp;
       [range(0,1024)] DWORD ulDestFormatNameLen;
       [size_is(,ulDestFormatNameLen)] 
         WCHAR** ppDestFormatName;
       DWORD* pulDestFormatNameLenProp;
       [range(0,1024)] DWORD ulOrderingFormatNameLen;
       [size_is(,ulOrderingFormatNameLen)] 
         WCHAR** ppOrderingFormatName;
       DWORD* pulOrderingFormatNameLenProp;
     } Receive;
     [case(CACTB_CREATECURSOR)] 
       struct CACCreateRemoteCursor CreateCursor;
   };
   unsigned short* pClass;
   OBJECTID** ppMessageID;
   [size_is(,20), length_is(,20)] unsigned char** ppCorrelationID;
   DWORD* pSentTime;
   DWORD* pArrivedTime;
   unsigned char* pPriority;
   unsigned char* pDelivery;
   unsigned char* pAcknowledge;
   unsigned char* pAuditing;
   DWORD* pApplicationTag;
   [size_is(,ulAllocBodyBufferInBytes), length_is(,ulBodyBufferSizeInBytes)] 
     unsigned char** ppBody;
   DWORD ulBodyBufferSizeInBytes;
   DWORD ulAllocBodyBufferInBytes;
   DWORD* pBodySize;
   [size_is(,ulTitleBufferSizeInWCHARs), length_is(,ulTitleBufferSizeInWCHARs)] 
     WCHAR** ppTitle;
   DWORD ulTitleBufferSizeInWCHARs;
   DWORD* pulTitleBufferSizeInWCHARs;
   DWORD ulAbsoluteTimeToQueue;
   DWORD* pulRelativeTimeToQueue;
   DWORD ulRelativeTimeToLive;
   DWORD* pulRelativeTimeToLive;
   unsigned char* pTrace;
   DWORD* pulSenderIDType;
   [size_is(,uSenderIDLen)] unsigned char** ppSenderID;
   DWORD* pulSenderIDLenProp;
   DWORD* pulPrivLevel;
   DWORD ulAuthLevel;
   unsigned char* pAuthenticated;
   DWORD* pulHashAlg;
   DWORD* pulEncryptAlg;
   [size_is(,ulSenderCertLen)] unsigned char** ppSenderCert;
   DWORD ulSenderCertLen;
   DWORD* pulSenderCertLenProp;
   [size_is(,ulProvNameLen)] WCHAR** ppwcsProvName;
   DWORD ulProvNameLen;
   DWORD* pulAuthProvNameLenProp;
   DWORD* pulProvType;
   long fDefaultProvider;
   [size_is(,ulSymmKeysSize)] unsigned char** ppSymmKeys;
   DWORD ulSymmKeysSize;
   DWORD* pulSymmKeysSizeProp;
   unsigned char bEncrypted;
   unsigned char bAuthenticated;
   unsigned short uSenderIDLen;
   [size_is(,ulSignatureSize)] unsigned char** ppSignature;
   DWORD ulSignatureSize;
   DWORD* pulSignatureSizeProp;
   GUID** ppSrcQMID;
   XACTUOW* pUow;
   [size_is(,ulMsgExtensionBufferInBytes), length_is(,ulMsgExtensionBufferInBytes)] 
     unsigned char** ppMsgExtension;
   DWORD ulMsgExtensionBufferInBytes;
   DWORD* pMsgExtensionSize;
   GUID** ppConnectorType;
   DWORD* pulBodyType;
   DWORD* pulVersion;
 } CACTransferBufferV1;
</pre></div>
</dd></dl><p><b>uTransferType:</b>  The <b>uTransferType</b>
member specifies which of the <b>Send</b>, <b>Receive</b>, or <b>CreateCursor</b>
union members is present in the CACTransferBufferV1 structure. The <b>uTransferType</b>
member MUST be assigned a value from the <a href="97666dcb-8c6b-4c0b-8fc2-153bb9cfb2b7" data-linktype="relative-path">TRANSFER_TYPE (section 2.2.2.1)</a>
enumeration.</p><p><b>Send:</b>  The <b>Send</b> structure is
present in the CACTransferBufferV1 structure when the value of the <b>uTransferType</b>
member is 0x00000000 (CACTB_SEND). The <b>Send</b> structure is defined inline
to the CACTransferBufferV1 structure. The <b>Send</b> structure members are
defined as follows:</p><p><b>pAdminQueueFormat:</b>  The <b>pAdminQueueFormat</b>
member is a <b>QUEUE_FORMAT</b> (<a href="../ms-mqmq/b7cc2590-a617-45df-b6a3-1f31102b36fb" data-linktype="relative-path">[MS-MQMQ]</a>
section <a href="../ms-mqmq/905e154a-6123-42a9-86cb-e0a3169820f2" data-linktype="relative-path">2.2.7</a>)
structure. If present, the <b>pAdminQueueFormat</b> member describes the <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_de288973-200c-431f-99be-2165bb440243" data-linktype="relative-path">administration queue</a> that
is to be used for send operation acknowledgments.</p><p><b>pResponseQueueFormat:</b>  The <b>pResponseQueueFormat</b>
member is a <b>QUEUE_FORMAT</b> structure. If present, the <b>pResponseQueueFormat</b>
member describes the <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_c1a6400d-703b-4f9a-a74c-40f1487978d9" data-linktype="relative-path">queue</a>
that is to be used for application-specific responses. As an
application-specific value, this field SHOULD be ignored by the <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_434b0234-e970-4e8c-bdfa-e16a30d96703" data-linktype="relative-path">server</a>.</p><p><b>Receive:</b>  The Receive structure is
present in the CACTransferBufferV1 structure when the value of the <b>uTransferType</b>
member is 0x00000001 (CACTB_RECEIVE). The Receive structure is defined inline
to the CACTransferBufferV1 structure. The Receive structure members are defined
as follows:</p><p><b>RequestTimeout:</b>  The <b>RequestTimeout</b>
member specifies the amount of time (in milliseconds) to wait for a message to
be returned before returning a failure. </p><p><b>Action:</b>  The <b>Action</b> member
specifies the type of receive operation that is to be performed. The <b>Action</b>
member MUST specify one of the values: 0x00000000 (MQ_ACTION_RECEIVE),
0x80000000 (MQ_ACTION_PEEK_CURRENT), or 0x80000001 (MQ_ACTION_PEEK_NEXT).</p><dl>
<dd>
<dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Name</p>
   </th>
   <th>
   <p>Value</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQ_ACTION_RECEIVE</td>
  <td>0x00000000</td>
 </tr><tr>
  <td>MQ_ACTION_PEEK_CURRENT</td>
  <td>0x80000000</td>
 </tr><tr>
  <td>MQ_ACTION_PEEK_NEXT</td>
  <td>0x80000001</td>
 </tr></tbody></table>
</dd></dl></dd></dl><p><b>Asynchronous:</b>  The <b>Asynchronous</b>
member is used as a Boolean variable to indicate if the receive is to be
performed asynchronously. An <b>Asynchronous</b> member value of 0x00000000
SHOULD be interpreted as specifying FALSE (receive operation is not to be
performed asynchronously) and all other values SHOULD be interpreted as TRUE
(receive operation is to be performed asynchronously).<a id="Appendix_A_Target_4"></a><a aria-label="Product behavior note 4" href="3d105257-668f-4768-83fe-344c8405a5a5#Appendix_A_4" data-linktype="relative-path">&lt;4&gt;</a></p><p><b>Cursor:</b>  A cursor handle obtained
from <a href="e8d526c6-a119-4d27-8fac-bf59bab72f30" data-linktype="relative-path">rpc_ACCreateCursorEx (section 3.1.5.4)</a>.
A cursor can be used to reference a specific position within the message queue,
rather than the first message in the queue, from which the message will be
retrieved.</p><p><b>ulResponseFormatNameLen:</b>  The <b>ulResponseFormatNameLen</b>
member specifies the size (in count of Unicode characters) of the string
allocated for the <b>ppResponseFormatName</b> member. The <b>ulResponseFormatNameLen</b>
member MUST have a value in the range of 0 to 1024, inclusive.</p><p><b>ppResponseFormatName:</b>  A
null-terminated Unicode string containing a <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_390ae273-7109-44eb-981f-aa157e6b37c0" data-linktype="relative-path">format name</a> (as specified
in [MS-MQMQ]) which indicates an application-defined queue which can be used
for response messages. This value is used only by MSMQ applications, and it
MUST be ignored by <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_9cc28d04-4172-4d09-bb36-9f33d073379f" data-linktype="relative-path">MSMQ
queue managers</a>.</p><p><b>pulResponseFormatNameLenProp:</b>  The <b>pulResponseFormatNameLenProp</b>
member specifies the size (in count of Unicode characters) of the string
contained in the <b>ppResponseFormatName</b> member.</p><p><b>ulAdminFormatNameLen:</b>  The <b>ulAdminFormatNameLen</b>
member specifies the size (in count of Unicode characters) of the string
allocated for the <b>ppAdminFormatName</b> member. The <b>ulAdminFormatNameLen</b>
member MUST have a value in the range of 0 to 1024, inclusive.</p><p><b>ppAdminFormatName:</b>  A
null-terminated Unicode string containing a format name (as specified in
[MS-MQMQ]) which indicates an application-defined administration queue to which
acknowledgment messages will be directed.</p><p><b>pulAdminFormatNameLenProp:</b>  The <b>pulAdminFormatNameLenProp</b>
member specifies the size (in count of Unicode characters) of the string
contained in the <b>ppAdminFormatName</b> member.</p><p><b>ulDestFormatNameLen:</b>  The <b>ulDestFormatNameLen</b>
member specifies the size (in count of Unicode characters) of the string
allocated for the <b>ppDestFormatName</b> member. The <b>ulDestFormatNameLen</b>
member MUST have a value in the range of 0 to 1024, inclusive.</p><p><b>ppDestFormatName:</b>  A null-terminated
Unicode string containing a format name (as specified in [MS-MQMQ]) that
indicates the name of a message&#39;s destination queue.</p><p><b>pulDestFormatNameLenProp:</b>  The <b>pulDestFormatNameLenProp</b>
member specifies the size (in count of Unicode characters) of the string
contained in the <b>ppDestFormatName</b> member.</p><p><b>ulOrderingFormatNameLen:</b>  The <b>ulOrderingFormatNameLen</b>
member specifies the size (in count of Unicode characters) of the string
allocated for the <b>ppOrderingFormatName</b> member. The <b>ulOrderingFormatNameLen</b>
member MUST have a value in the range of 0 to 1024, inclusive.</p><p><b>ppOrderingFormatName:</b>  A
null-terminated Unicode string containing a format name (as specified in
[MS-MQMQ]) that indicates the name of the MSMQ <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_ebc1f4cb-7188-4800-aa1e-a365b2d87ba0" data-linktype="relative-path">order queue</a> that tracks the
ordering of transactional messages.</p><p><b>pulOrderingFormatNameLenProp:</b>  The <b>pulOrderingFormatNameLenProp</b>
member specifies the size (in count of Unicode characters) of the string
contained in the <b>ppOrderingFormatName</b> member.</p><p><b>CreateCursor:</b>  The <b>CreateCursor</b>
member contains information for creating a <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275" data-linktype="relative-path">cursor</a> which is used when
receiving messages from a queue. The <b>CreateCursor</b> member is present in
the CACTransferBufferV1 structure when the value of the <b>uTransferType</b>
member is 0x00000002 (CACTB_CREATECURSOR). The <b>CreateCursor</b> member is
not used by any of the methods defined by the qmcomm and qmcomm2 interfaces.</p><p><b>pClass:</b>  This field indicates the
message classification, such as a positive acknowledgment, a system-generated
report message, or a normal application-generated message. It contains a 16-bit
structure as defined below:</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>0</p>
   </th>
   <th>
   <p>1</p>
   </th>
   <th>
   <p>2</p>
   </th>
   <th>
   <p>3</p>
   </th>
   <th>
   <p>4</p>
   </th>
   <th>
   <p>5</p>
   </th>
   <th>
   <p>6</p>
   </th>
   <th>
   <p>7</p>
   </th>
   <th>
   <p>8</p>
   </th>
   <th>
   <p>9</p>
   </th>
   <th>
   <p>1 0</p>
   </th>
   <th>
   <p>1</p>
   </th>
   <th>
   <p>2</p>
   </th>
   <th>
   <p>3</p>
   </th>
   <th>
   <p>4</p>
   </th>
   <th>
   <p>5</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td colspan="9">Class Code</td>
  <td colspan="4">Reserved</td>
  <td>H</td>
  <td>R</td>
  <td>S</td>
 </tr></tbody></table>
</dd></dl><p> </p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>Class Code 0x00 — 0xFF</td>
  <td>Specifies the type of the acknowledgment. This field uniquely classifies the message type within the groupings defined by the fields described above. If the H bit is set, this field contains an HTTP status code.</td>
 </tr><tr>
  <td>Reserved 0x0000</td>
  <td>MUST be set to all zeros. Clients and servers MUST ignore the Reserved member.</td>
 </tr><tr>
  <td>H 0 — 1</td>
  <td>Specifies whether or not HTTP is being used. A value of 0 MUST be used to specify that HTTP is not being used. A value of 1 MUST be used to specify that HTTP is being used. If 1, the Class Code field contains an HTTP status code.</td>
 </tr><tr>
  <td>R 0 — 1</td>
  <td>Specifies the stage at which the acknowledgment is to occur. A value of 0 MUST be used to specify that the acknowledgment is for the delivery (arrival) stage. A value of 1 MUST be used to specify that the acknowledgment is for the receive stage.</td>
 </tr><tr>
  <td>S 0 — 1</td>
  <td>Specifies the type of acknowledgment. A value of 0 MUST be used to specify that normal (positive acknowledgment) message processing has occurred. A value of 1 MUST be used to specify that abnormal (negative acknowledgment) message processing has occurred.</td>
 </tr></tbody></table>
</dd>
<dd>
<p>The following table provides correspondence between
the message class values defined in [MS-MQMQ] section <a href="../ms-mqmq/bb697835-fe47-4ec3-8457-6c06880a2138" data-linktype="relative-path">2.2.18.1.6</a>
with the abstract message class types defined in <a href="../ms-mqdmpr/5eafe0a6-a22f-436b-a0d9-4cbc25c52b47" data-linktype="relative-path">[MS-MQDMPR]</a>
section <a href="../ms-mqdmpr/9170afda-9524-4abd-91fe-8c53e51e0def" data-linktype="relative-path">3.1.1.12</a>.</p>
<dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Message Class Value</p>
   </th>
   <th>
   <p>Message Class Type</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_CLASS_NORMAL 0x0000</td>
  <td>Normal</td>
 </tr><tr>
  <td>MQMSG_CLASS_REPORT 0x0001</td>
  <td>Report</td>
 </tr><tr>
  <td>MQMSG_CLASS_ACK_REACH_QUEUE 0x0002</td>
  <td>AckReachQueue</td>
 </tr><tr>
  <td>MQMSG_CLASS_ACK_RECEIVE 0x4000</td>
  <td>AckReceive</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_BAD_DST_Q 0x8000</td>
  <td>NackBadDestQueue</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_DELETED 0x8001</td>
  <td>NackPurged</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT 0x8002</td>
  <td>NackReachQueueTimeout</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_Q_EXCEED_QUOTA 0x8003</td>
  <td>NackQueueExceedQuota</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_ACCESS_DENIED 0x8004</td>
  <td>NackAccessDenied</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED 0x8005</td>
  <td>NackHopCountExceeded</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_BAD_SIGNATURE 0x8006</td>
  <td>NackBadSignature</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_BAD_ENCRYPTION 0x8007</td>
  <td>NackBadEncryption</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q 0x8009</td>
  <td>NackNotTransactionalQueue</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG 0x800a</td>
  <td>NackNotTransactionalMessage</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER 0x800b</td>
  <td>NackUnsupportedCryptoProvider</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_Q_DELETED 0xc000</td>
  <td>NackQueueDeleted</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_Q_PURGED 0xc001</td>
  <td>NackQueuePurged</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_RECEIVE_TIMEOUT 0xc002</td>
  <td>NackReceiveTimeout</td>
 </tr><tr>
  <td>MQMSG_CLASS_NACK_RECEIVE_REJECTED 0xc004</td>
  <td>NackReceiveRejected</td>
 </tr></tbody></table>
</dd></dl></dd></dl><p><b>ppMessageID:</b>  The <b>ppMessageID</b>
member, if present, specifies a value that can be used to correlate response
messages to sent messages.</p><p><b>ppCorrelationID:</b>  If present, the <b>ppCorrelationID</b>
member is an array of bytes containing an <a href="../ms-mqmq/653f80a3-6585-4cca-bb7f-5154b4ad0fab" data-linktype="relative-path">OBJECTID</a>
structure (as specified in [MS-MQMQ] section 2.2.8). The <b>ppCorrelationID</b>
member, if present, contains a value copied from the <b>ppMessageID</b> member
of a previous request and can be used to correlate responses with previously
sent messages. The size (in count of bytes) of <b>ppCorrelationID</b> MUST NOT
exceed 20.</p><p><b>pSentTime:</b>  The <b>pSentTime</b>
member is formatted in <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_f2369991-a884-4843-a8fa-1505b6d5ece7" data-linktype="relative-path">UTC</a>.
The <b>pSentTime</b> member specifies the time that the message was sent.</p><p><b>pArrivedTime:</b>  The <b>pArrivedTime</b>
member is formatted in UTC. The <b>pArrivedTime</b> member specifies the time
the message was received.</p><p><b>pPriority:</b>  The <b>pPriority</b> member
is a single byte. The <b>pPriority</b> member specifies the processing priority
for the message with larger values indicating a higher priority. The byte value
MUST be in the range of 0x00 to 0x07. If no priority is set, the default
priority value of 0x03 is used. The <b>pPriority</b> member is ignored for
transactional messages. Messages that are not part of a <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_61e1de21-a78d-4d20-b184-eda380386871" data-linktype="relative-path">transaction</a> will be
processed in arrival sequence within priority. The <b>pPriority</b> member is
ignored if the message is a part of a transaction.</p><p><b>pDelivery:</b>  The <b>pDelivery</b>
member is a single byte. The <b>pDelivery</b> member MUST specify a value of
0x00 or 0x01.</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00</td>
  <td>A value of 0x00 specifies that the message is not recoverable. The message can remain in volatile storage and is subject to loss in the event of a system crash. This value corresponds to Message.DeliveryGuarantee.Express as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>0x01</td>
  <td>A value of 0x01 specifies that the message is recoverable and is to be written to non-volatile storage as it moves through the network to its destination and can survive a system crash. Recoverable messages do not have to be part of a transaction. This value corresponds to Message.DeliveryGuarantee.Recoverable as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pAcknowledge:</b>  The <b>pAcknowledge</b>
member is a single byte. The <b>pAcknowledge</b> member value specifies the
types of acknowledgment messages that are to be generated for this message.
Acknowledgment messages are returned in the administration queue. The <b>pAcknowledge</b>
member value MUST be assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_ACKNOWLEDGMENT_NONE 0x00</td>
  <td>No acknowledgment needed. This value corresponds to Message.AcknowledgementsRequested.None as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL 0x01</td>
  <td>Positive acknowledgment is to be sent when the message is placed in the destination queue. This value corresponds to Message.AcknowledgementsRequested.AckPosArrival as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_POS_RECEIVE 0x02</td>
  <td>Positive acknowledgment is to be sent when the message is received from the destination queue. This value corresponds to Message.AcknowledgementsRequested.AckPosReceive as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL 0x04</td>
  <td>Negative acknowledgment is to be sent when the message fails to arrive at the destination queue. This value corresponds to Message.AcknowledgementsRequested.AckNegArrival as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE 0x04</td>
  <td>Negative acknowledgment is to be sent when the message fails to arrive at the destination queue. This value corresponds to Message.AcknowledgementsRequested.AckNegArrival as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE 0x05</td>
  <td>Positive acknowledgment is to be sent when the message is placed in the destination queue and/or negative acknowledgment is to be sent when the message fails to arrive at the destination queue. This value corresponds to a combination of Message.AcknowledgementsRequested.AckPosArrival and AckNegArrival as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE 0x08</td>
  <td>Negative acknowledgment is to be sent when the message fails to be received from the destination queue. This value corresponds to Message.AcknowledgementsRequested.AckNegReceive as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE 0x0C</td>
  <td>Negative acknowledgment is to be sent when the message fails to arrive at the destination queue or when a receive for the message from the destination queue fails. This value corresponds to a combination of Message.AcknowledgementsRequested.AckNegReceive and AckNegArrival as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE 0x0E</td>
  <td>Positive acknowledgment is to be sent when the message is received from the destination queue and a negative acknowledgment is to be sent when the message fails to arrive at the destination queue or a negative acknowledgment is to be sent when a receive for the message from the destination queue fails. This value corresponds to a combination of Message.AcknowledgementsRequested.AckNegReceive, AckNegArrival, and AckPosReceive as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pAuditing:</b>  The <b>pAuditing</b>
member is a single byte. The <b>pAuditing</b> member value specifies the conditions
under which copies of the message are to be stored as the message is routed to
the destination queue. The <b>pAuditing</b> member value MUST be assigned from
the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_JOURNAL_NONE 0x00</td>
  <td>Do not store copies. This value corresponds to a Message.PositiveJournalingRequested value of False and a Message.NegativeJournalingRequested value of False, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_DEADLETTER 0x01</td>
  <td>Store copy in dead-letter queue on failure. This value corresponds to a Message.PositiveJournalingRequested value of False and a Message.NegativeJournalingRequested value of True, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_JOURNAL 0x02</td>
  <td>Store copy in queue journal upon successful delivery to next computer. This value corresponds to a Message.PositiveJournalingRequested value of True and a Message.NegativeJournalingRequested value of False, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_DEADLETTER|MQMSG_JOURNAL 0x03</td>
  <td>Store copy in queue journal upon successful delivery to next computer. Store copy in dead-letter queue on failure. This value corresponds to a Message.PositiveJournalingRequested value of True and a Message.NegativeJournalingRequested value of True, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pApplicationTag:</b>  The <b>pApplicationTag</b>
member value is a user-provided item that is passed through unmodified to the
message-receiving application. A common use of the <b>pApplicationTag</b>
member value is to indicate to the receiving application the type of data
contained in the <b>ppMsgExtension</b> member.</p><p><b>ppBody:</b>  The <b>ppBody</b> member is
an array of bytes. When the <b>ppBody</b> member is present it contains the
user message payload.</p><p><b>ulBodyBufferSizeInBytes:</b>  The <b>ulBodyBufferSizeInBytes</b>
member specifies the size (in count of bytes) of the data present in the <b>ppBody</b>
member. The value of the <b>ulBodyBufferSizeInBytes</b> member MUST be less
than or equal to the value in the <b>ulAllocBodyBufferInBytes</b> member.</p><p><b>ulAllocBodyBufferInBytes:</b>  The <b>ulAllocBodyBufferInBytes</b>
member specifies the size (in count of bytes) of the buffer that is allocated
to contain the <b>ppBody</b> member.</p><p><b>pBodySize:</b>  The <b>pBodySize</b>
member specifies the size (in count of bytes) of the data present in the <b>ppBody</b>
member after an encryption or decryption operation has been performed on the <b>ppBody</b>
member. The value of the <b>pBodySize</b> member MUST be less than or equal to
the value in the <b>ulAllocBodyBufferInBytes</b> member.</p><p><b>ppTitle:</b>  The <b>ppTitle</b> member,
when present, is a Unicode string. The <b>ppTitle</b> member specifies a title
associated with the message.</p><p><b>ulTitleBufferSizeInWCHARs:</b>  The <b>ulTitleBufferSizeInWCHARs</b>
member specifies the size (in count of Unicode characters) of the <b>ppTitle</b>
member. The <b>ulTitleBufferSizeInWCHARs</b> member MUST NOT exceed 250.</p><p><b>pulTitleBufferSizeInWCHARs:</b>  The <b>pulTitleBufferSizeInWCHARs</b>
member specifies the actual size (in count of Unicode characters) of the
string, if present, in the <b>ppTitle</b> member Unicode string.</p><p><b>ulAbsoluteTimeToQueue:</b>  The <b>ulAbsoluteTimeToQueue</b>
member value provided by the client specifies the number of seconds within
which the message MUST reach the destination queue or be discarded. Internally,
<b>ulAbsoluteTimeToQueue</b> is converted to a UTC time using the clock of the
system on which the <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_476f10ed-08f0-4887-b583-59d5cf909979" data-linktype="relative-path">queue
manager</a> is executing.</p><p><b>pulRelativeTimeToQueue:</b>  The <b>pulRelativeTimeToQueue</b>
member specifies the number of seconds within which the response message MUST
reach the destination queue or be discarded. </p><p><b>ulRelativeTimeToLive:</b>  The <b>ulRelativeTimeToLive</b>
member value specifies the number of seconds within which the message MUST be
received from the destination queue or be discarded. Internally, <b>ulRelativeTimeToLive</b>
is converted to a UTC time using the clock of the system on which the queue
manager is executing.</p><p><b>pulRelativeTimeToLive:</b>  The <b>pulRelativeTimeToLive</b>
member specifies the number of seconds remaining before the response message
will be discarded if it is not received from the destination queue. </p><p><b>pTrace:</b>  The <b>pTrace</b> member
MUST be a single byte and indicates whether or not tracing is active.</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00</td>
  <td>A value of 0x00 MUST be used to specify that tracing is not active. This value corresponds to Message.TracingRequested value of False, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>0x01</td>
  <td>A value of 0x01 MUST be used to specify that tracing is active. This value corresponds to Message.TracingRequested value of True, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pulSenderIDType:</b>  The <b>pulSenderIDType</b>
member specifies the type of the <b>ppSenderID</b> member contents. The <b>pulSenderIDType</b>
member value MUST be assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_SENDERID_TYPE_NONE 0x00000000</td>
  <td>No sender ID is present. This value corresponds to Message.SenderIdentifierType value of None, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_SENDERID_TYPE_SID 0x00000001</td>
  <td>The sender ID is a SID. This value corresponds to Message.SenderIdentifierType value of Sid, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_SENDERID_TYPE_QM 0x00000002</td>
  <td>The sender ID is the GUID assigned to a queue manager. This value corresponds to Message.SenderIdentifierType value of QueueManagerIdentifier, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>ppSenderID:</b>  The <b>ppSenderID</b>
member MUST be an array of bytes. When the value of the <b>pulSenderIDType</b>
member is 0x00000000 (MQMSG_SENDERID_TYPE_NONE), the <b>ppSenderID</b> member
MUST NOT be present. If the value of the <b>pulSenderIDType</b> member is
0x00000001 (MQMSG_SENDERID_TYPE_SID), the <b>ppSenderID</b> member MUST contain
a SID. If the value of the <b>pulSenderIDType</b> member is 0x00000002
(MQMSG_SENDERID_TYPE_QM), the <b>ppSenderID</b> member MUST contain a valid
MSMQ Site GUID.</p><p><b>pulSenderIDLenProp:</b>  The <b>pulSenderIDLenProp</b>
member specifies the size (in count of bytes) of the data present in the <b>ppSenderID</b>
member.</p><p><b>pulPrivLevel:</b>  The <b>pulPrivLevel</b>
member specifies the privacy level that is used for processing the message. The
<b>pulPrivLevel</b> member value MUST be assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_PRIV_LEVEL_NONE 0x00000000</td>
  <td>The message is not private. This value corresponds to Message.PrivacyLevel value of None, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_PRIV_LEVEL_BODY_BASE 0x00000001</td>
  <td>The message is private and the Cryptographic Service Provider (CSP) will use a 40-bit encryption key to encrypt and decrypt the message body. This value corresponds to Message.PrivacyLevel value of Base, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_PRIV_LEVEL_BODY_ENHANCED 0x00000002</td>
  <td>The message is private and the CSP will use a 128-bit encryption key to encrypt and decrypt the message body. This value corresponds to Message.PrivacyLevel value of Enhanced, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>ulAuthLevel:</b>  The <b>ulAuthLevel</b>
member is used only in local interprocess communication and therefore has no
meaning when this protocol is used over a network. Servers MUST ignore this
field, and clients can specify any value.</p><p><b>pAuthenticated:</b>  The <b>pAuthenticated</b>
member is a single byte. The <b>pAuthenticated</b> member value is used to
determine the <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_bfb9708e-9d05-4f79-8969-ef63f73aa434" data-linktype="relative-path">level of
authentication</a> that has been performed on the message. The <b>pAuthenticated</b>
member value MUST be assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_AUTHENTICATION_NOT_REQUESTED 0x00</td>
  <td>Authentication has not been performed. This value corresponds to Message.AuthenticationLevel value of None, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_AUTHENTICATED_SIG10 0x01</td>
  <td>Authentication has been performed using an MSMQ 1.0 digital signature. This value corresponds to Message.AuthenticationLevel value of Sig10, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_AUTHENTICATED_SIG20 0x03</td>
  <td>Authentication has been performed using an MSMQ 2.0 digital signature. This value corresponds to Message.AuthenticationLevel value of Sig20, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_AUTHENTICATED_SIG30 0x05</td>
  <td>Authentication has been performed using an MSMQ 3.0 digital signature. This value corresponds to Message.AuthenticationLevel value of Sig30, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_AUTHENTICATED_SIGXML 0x09</td>
  <td>Authentication has been performed using an XML digital signature. This value corresponds to Message.AuthenticationLevel value of XMLSig, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pulHashAlg:</b>  The <b>pulHashAlg</b>
member specifies the hashing algorithm that is to be used in the digital
signing process and by the authentication process. The <b>pulHashAlg</b> member
value MUST be assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_CALG_MD2 0x00008001</td>
  <td>Use the MD2 algorithm as specified in [RFC1319]. This value corresponds to the Message.HashAlgorithm value of MD2, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_MD4 0x00008002</td>
  <td>Use the MD4 algorithm as specified in [RFC1320]. This value corresponds to the Message.HashAlgorithm value of MD4, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_MD5 0x00008003</td>
  <td>Use the MD5 algorithm as specified in [RFC1321]. This value corresponds to the Message.HashAlgorithm value of MD5, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_SHA1 0x00008004</td>
  <td>Use the SHA-1 algorithm as specified in [RFC3174]. This value corresponds to the Message.HashAlgorithm value of SHA1, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_SHA_256 0x0000800C</td>
  <td>Use the SHA-256 algorithm, as specified in [FIPS180-2]. This value corresponds to the Message.HashAlgorithm value of SHA_256, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_SHA_512 0x0000800E</td>
  <td>Use the SHA-512 algorithm, as specified in [FIPS180-2]. This value corresponds to the Message.HashAlgorithm value of SHA_512, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>pulEncryptAlg:</b>  The <b>pulEncryptAlg</b>
member specifies that the encryption algorithm is to be used to encrypt and
decrypt the message body. The <b>pulEncryptAlg</b> member value MUST be
assigned from the following list:</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQMSG_CALG_RC2 0x00006602</td>
  <td>Use the RC2 encryption algorithm as specified in [RFC2268]. This value corresponds to Message.EncryptionAlgorithm value of RC2, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr><tr>
  <td>MQMSG_CALG_RC4 0x00006801</td>
  <td>Use the RC4 encryption algorithm as specified in [RC4]. This value corresponds to Message.EncryptionAlgorithm value of RC4, as defined in [MS-MQDMPR] section 3.1.1.12.</td>
 </tr></tbody></table><p><b>ppSenderCert:</b>  The <b>ppSenderCert</b>
member is an array of bytes. If not NULL, the <b>ppSenderCert</b> member MUST
contain the message sender&#39;s X509 certificate. The byte length of the buffer
MUST be indicated by <b>ulSenderCertLen</b>.</p><p><b>ulSenderCertLen:</b>  The <b>ulSenderCertLen</b>
member specifies the byte length of the certificate contained in <b>ppSenderCert</b>.</p><p><b>pulSenderCertLenProp:</b>  The <b>pulSenderCertLenProp</b>
member specifies the length (in count of bytes) of the certificate contained in
<b>ppSenderCert</b>.</p><p><b>ppwcsProvName:</b>  The <b>ppwcsProvName</b>
member is a Unicode string. If present, the <b>ppwcsProvName</b> member
specifies the name of the Cryptographic Service Provider (CSP) that is used to
generate digital signatures for the message.</p><p><b>ulProvNameLen:</b>  The <b>ulProvNameLen</b>
member specifies the size (in count of Unicode characters) of the buffer that
was allocated to contain the <b>ppwcsProvName</b> string.</p><p><b>pulAuthProvNameLenProp:</b>  The <b>pulAuthProvNameLenProp</b>
member specifies the size (in count of Unicode characters) of the CSP name
contained in <b>ppwcsProvName</b>, plus the size of an enhanced signature
appended to the <b>ppSignature</b> buffer. Rules for computing and
understanding values for this field are defined in sections <a href="328a5652-db8d-4426-b01c-2c1e499086df" data-linktype="relative-path">3.1.5.3</a> and 3.1.5.4.</p><p><b>pulProvType:</b>  The <b>pulProvType</b>
member specifies the type of CSP that is named by <b>ppwcsProvName</b>.</p><p><b>fDefaultProvider:</b>  The <b>fDefaultProvider</b>
member specifies if the CSP named by <b>ppwcsProvName</b> is a default CSP. A
value of 0x00000000 MUST be used to specify that the <b>ppwcsProvName</b> is
not the default name and all other values MUST be interpreted as specifying
that the <b>ppwcsProvName</b> is the default name.</p><p><b>ppSymmKeys:</b>  The <b>ppSymmKeys</b>
member is an array of bytes. The <b>ppSymmKeys</b> member, if present, contains
an encrypted symmetric key.</p><p><b>ulSymmKeysSize:</b>  The <b>ulSymmKeysSize</b>
member specifies the size (in count of bytes) of the buffer that was allocated
to contain the <b>ppSymmKeys</b> member.</p><p><b>pulSymmKeysSizeProp:</b>  The <b>pulSymmKeysSizeProp</b>
member specifies the size (in count of bytes) of the <b>ppSymmKeys</b> member.</p><p><b>bEncrypted:</b>  The <b>bEncrypted</b>
member is a single byte. The <b>bEncrypted</b> member specifies if the message
body is encrypted or is not encrypted. A <b>bEncrypted</b> member value of 0x00
MUST be interpreted as specifying that the message is not encrypted (FALSE) and
all other values MUST be interpreted as specifying that the message is
encrypted (TRUE).</p><p><b>bAuthenticated:</b>  The <b>bAuthenticated</b>
member is a single byte. The <b>bAuthenticated</b> member specifies if the
message has been authenticated or has not been authenticated. A <b>bAuthenticated</b>
member value of 0x00 MUST be used to specify that the message has not been
authenticated (FALSE) and all other values MUST be interpreted as specifying
that the message has been authenticated (TRUE).</p><p><b>uSenderIDLen:</b>  The <b>uSenderIDLen</b>
member specifies the maximum size (in count of bytes) that is available to contain
data in the <b>ppSenderID</b> member.</p><p><b>ppSignature:</b>  The <b>ppSignature</b>
member is an array of bytes. The <b>ppSignature</b> member contains the
signature(s) used to authenticate the message.<a id="Appendix_A_Target_5"></a><a aria-label="Product behavior note 5" href="3d105257-668f-4768-83fe-344c8405a5a5#Appendix_A_5" data-linktype="relative-path">&lt;5&gt;</a></p><p><b>ulSignatureSize:</b>  The <b>ulSignatureSize</b>
member specifies the size (in count of bytes) allocated to hold the <b>ppSignature</b>
member.</p><p><b>pulSignatureSizeProp:</b>  The <b>pulSignatureSizeProp</b>
member specifies the size (in count of bytes) of the authentication
signature(s) in the <b>ppSignature</b> member.</p><p><b>ppSrcQMID:</b>  The <b>ppSrcQMID</b>
member is a GUID. The member contains the GUID assigned to the MSMQ
installation that is the source of the message.</p><p><b>pUow:</b>  The <b>pUow</b> member is an <a href="../ms-mqmq/711d679b-e7b1-4e0c-8e51-f7529bfbc02f" data-linktype="relative-path">XACTUOW</a>
structure ([MS-MQMQ] section 2.2.18.1.8). If not NULL, this field identifies a
transaction for a Send or Receive operation.</p><p><b>ppMsgExtension:</b>  The <b>ppMsgExtension</b>
member is an array of bytes. The <b>ppMsgExtension</b> member, when present,
contains application-specific data. The <b>ppMsgExtension</b> member is
primarily used to pass information to <a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_ee553c1a-b390-42d5-a785-2412a31f98fb" data-linktype="relative-path">foreign queues</a>.</p><p><b>ulMsgExtensionBufferInBytes:</b>  The <b>ulMsgExtensionBufferInBytes</b>
member specifies the size (in count of bytes) of the buffer allocated for the <b>ppMsgExtension</b>
array.</p><p><b>pMsgExtensionSize:</b>  The <b>pMsgExtensionSize</b>
member specifies the size (in count of bytes) of the data contained in the <b>ppMsgExtension</b>
array.</p><p><b>ppConnectorType:</b>  The <b>ppConnectorType</b>
member, if present, is a GUID. The <b>ppConnectorType</b> member specifies the
identifier of a foreign queue that is used to communicate with a foreign
messaging system.</p><p><b>pulBodyType:</b>  The <b>pulBodyType</b>
member value MUST be one of the valid values allowed for a <a href="../ms-mqmq/7ebd137c-ce66-49d6-b90e-22560f9155e5" data-linktype="relative-path">VARTYPE</a>
as specified in [MS-MQMQ] section <a href="../ms-mqmq/876f9674-752a-4d9b-bf8b-7212c6c9a6b4" data-linktype="relative-path">2.2.12</a>.</p><p><b>pulVersion:</b>  The <b>pulVersion</b>
member specifies the MSMQ packet version.<a id="Appendix_A_Target_6"></a><a aria-label="Product behavior note 6" href="3d105257-668f-4768-83fe-344c8405a5a5#Appendix_A_6" data-linktype="relative-path">&lt;6&gt;</a></p></div>