<div class="content" name="REMOTEREADDESC" uuid="645e7b85-18f0-4f50-a905-1dd55565728b"><p>This structure is used to encapsulate the information
necessary to perform operations <a href="aab4d8fa-3a56-483c-ac61-4172a09fc199" data-linktype="relative-path">RemoteQMStartReceive</a>, <a href="a0df225e-80ea-4242-90e5-9891bfa9ebfb" data-linktype="relative-path">RemoteQMStartReceive2</a>, and
<a href="b8a82b34-6feb-4057-8f7f-48275fa65068" data-linktype="relative-path">RemoteQMStartReceiveByLookupId</a>.</p><dl>
<dd>
<div><pre> typedef struct _REMOTEREADDESC {
   DWORD hRemoteQueue;
   DWORD hCursor;
   DWORD ulAction;
   DWORD ulTimeout;
   [range(0, 4325376)] DWORD dwSize;
   DWORD dwQueue;
   DWORD dwRequestID;
   DWORD Reserved;
   DWORD dwArriveTime;
   REMOTEREADACK eAckNack;
   [unique, size_is(dwSize), length_is(dwSize)] 
     byte* lpBuffer;
 } REMOTEREADDESC;
</pre></div>
</dd></dl><p><b>hRemoteQueue:</b>   A handle to the <a href="33b1ac82-69ab-413c-9415-cd6f45d77156#gt_c1a6400d-703b-4f9a-a74c-40f1487978d9" data-linktype="relative-path">queue</a> as obtained from the <i>phQueue</i>
parameter of the <b>qmcomm:R_QMOpenRemoteQueue</b> method, as specified in <a href="../ms-mqmp/8e379aa2-802d-4fcc-b6a6-6203e4606fa9" data-linktype="relative-path">[MS-MQMP]</a>
section <a href="../ms-mqmp/47482511-3c4a-4d7e-8edb-46715e89e4af" data-linktype="relative-path">3.1.4.2</a>.
This value is set by the client.</p><p><b>hCursor:</b>   If nonzero, specifies a
handle to a <a href="33b1ac82-69ab-413c-9415-cd6f45d77156#gt_aa5e9c2d-16c1-4301-8bfe-18a0913ed275" data-linktype="relative-path">cursor</a> that
MUST have been obtained from the <i>phCursor</i> parameter of the <b>qmcomm:R_QMCreateRemoteCursor</b>
method, as specified in [MS-MQMP] section <a href="../ms-mqmp/bbf4bc8a-e697-4720-8015-d249a716371d" data-linktype="relative-path">3.1.4.4</a>.
This value is set by the client.</p><p><b>ulAction:</b>   The following table
describes possible actions. The Peek and Receive operations both enable access
to the contents of a <a href="33b1ac82-69ab-413c-9415-cd6f45d77156#gt_85c78cf0-1fb6-4e5d-85f5-a2e9f58a6b9e" data-linktype="relative-path">message</a>.
This value is set by the client.</p><table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Type/Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>MQ_ACTION_RECEIVE 0x00000000</td>
  <td>Type = Receive Reads and removes a message from the current cursor location if hCursor is nonzero or from the front of the queue if hCursor is set to zero.</td>
 </tr><tr>
  <td>MQ_ACTION_PEEK_CURRENT 0x80000000</td>
  <td>Type = Peek Reads a message from the current cursor location if hCursor is nonzero or from the front of the queue if hCursor is set to zero but does not remove it from the queue.</td>
 </tr><tr>
  <td>MQ_ACTION_PEEK_NEXT 0x80000001</td>
  <td>Type = Peek Reads a message following the message at the current cursor location but does not remove it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_PEEK_CURRENT 0x40000010</td>
  <td>Type = Peek Reads the message specified by a lookup identifier but does not remove it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_PEEK_NEXT 0x40000011</td>
  <td>Type = Peek Reads the message following the message specified by a lookup identifier but does not remove it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_PEEK_PREV 0x40000012</td>
  <td>Type = Peek Reads the message preceding the message specified by a lookup identifier but does not remove it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_RECEIVE_CURRENT 0x40000020</td>
  <td>Type = Receive Reads the message specified by a lookup identifier and removes it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_RECEIVE_NEXT 0x40000021</td>
  <td>Type = Receive Reads the message following the message specified by a lookup identifier and removes it from the queue.</td>
 </tr><tr>
  <td>MQ_LOOKUP_RECEIVE_PREV 0x40000022</td>
  <td>Type = Receive Reads the message preceding the message specified by a lookup identifier and removes it from the queue.</td>
 </tr></tbody></table><p><b>ulTimeout:</b>   Specifies a time-out in
milliseconds for the server to wait for a message to become available in the
queue. This value is set by the client. To specify an infinite time-out, the
client MUST set this field to 0xFFFFFFFF.</p><p><b>dwSize:</b>   Specifies the size, in
bytes, of <b>lpBuffer</b>. The valid range is 0 to 0x00420000. This value is
set by the server and MUST be set to 0 by the client.</p><p><b>dwQueue:</b>   A <a href="../ms-dtyp/262627d8-3418-4627-9218-4ffe110850b2" data-linktype="relative-path">DWORD</a>
pointed to by the <i>dwpQueue</i> parameter of the <b>qmcomm:R_QMOpenRemoteQueue</b>
method, as specified in [MS-MQMP] section 3.1.4.2. This value is set by the client.</p><p><b>dwRequestID:</b>  The client MUST set
this member to a unique identifier for the receive request, which could later
be used to identify and cancel the receive request. This value is set by the
client. The client SHOULD NOT<a id="Appendix_A_Target_6"></a><a aria-label="Product behavior note 6" href="d6c5ba0a-aaf8-489d-baf2-fdc286b4bea4#Appendix_A_6" data-linktype="relative-path">&lt;6&gt;</a> reuse this
identifier until a call to the RemoteQMEndReceive (Opnum 1) method or to the
RemoteQMCancelReceive (Opnum 5) method has been made for that receive request.</p><p><b>Reserved:</b>  This is a reserved field
of type <b>DWORD</b> that MUST be ignored.</p><dl>
<dd>
<dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Value</p>
   </th>
   <th>
   <p>Meaning</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00000000</td>
  <td>Returned by client.</td>
 </tr><tr>
  <td>0x00000001</td>
  <td>Returned by server.</td>
 </tr></tbody></table>
</dd></dl></dd></dl><p><b>dwArriveTime:</b>   The server MUST set
this value to the time that the message was added to the queue. The time MUST
be expressed as the number of seconds elapsed since 00:00:00.0, January 1, 1970
Coordinated Universal Time (UTC). </p><p><b>eAckNack:</b>  This is a reserved field
and MUST be ignored by the client and the server.</p><p><b>lpBuffer:</b>  This field represents a
pointer to a buffer containing the <a href="../ms-mqmq/56bae708-1289-48ff-a411-bf3782602476" data-linktype="relative-path">UserMessage
Packet</a> (<a href="../ms-mqmq/b7cc2590-a617-45df-b6a3-1f31102b36fb" data-linktype="relative-path">[MS-MQMQ]</a>
section 2.2.20). The size of this field is specified by <b>dwSize</b>. This
value is set by the server and MUST be set to NULL by the client.</p></div>