<div class="content"><p> </p><p>A <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_60e0e1fa-66fe-41e1-b5e3-ceab97e53506" data-linktype="relative-path">client</a></span> invokes
QMSendMessageInternalEx if the <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_434b0234-e970-4e8c-bdfa-e16a30d96703" data-linktype="relative-path">server</a></span> returns
STATUS_RETRY (0xc000022d) from a prior call to <span><a href="a043b74f-8466-42d6-9a66-b3f2581b309a" data-linktype="relative-path">rpc_ACSendMessageEx</a></span>.
Implementations of this protocol SHOULD NOT return STATUS_RETRY from
rpc_ACSendMessageEx, rendering this method unnecessary. Such implementations
MUST take no action when QMSendMessageInternalEx is invoked and return
MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064).</p><dl>
<dd>
<div><pre> HRESULT QMSendMessageInternalEx(
   [in] handle_t hBind,
   [in] QUEUE_FORMAT* pQueueFormat,
   [in] struct CACTransferBufferV2* ptb,
   [in, out, unique] OBJECTID* pMessageID
 );
</pre></div>
</dd></dl><p><b>hBind: </b>MUST be set to an <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_8a7f6700-8311-45bc-af10-82e10accd331" data-linktype="relative-path">RPC</a></span>
binding handle as described in <span><a href="../ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15" data-linktype="relative-path">[MS-RPCE]</a></span>
section <span><a href="../ms-rpce/a01f5886-c485-4bcf-bb23-e0d755510ab7" data-linktype="relative-path">2</a></span>.</p><p><b>pQueueFormat: </b>MUST be a pointer to a <b>QUEUE_FORMAT</b>
(<span><a href="../ms-mqmq/b7cc2590-a617-45df-b6a3-1f31102b36fb" data-linktype="relative-path">[MS-MQMQ]</a></span>
section <span><a href="../ms-mqmq/905e154a-6123-42a9-86cb-e0a3169820f2" data-linktype="relative-path">2.2.7</a></span>)
structure, which identifies an existing <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_c1a6400d-703b-4f9a-a74c-40f1487978d9" data-linktype="relative-path">queue</a></span> to be opened.
MUST NOT be NULL, and MUST conform to the <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_390ae273-7109-44eb-981f-aa157e6b37c0" data-linktype="relative-path">format name</a></span> syntax
rules defined in [MS-MQMQ]. The queue identified by <i>pQueueFormat</i> MUST be
local to the <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_2739ef12-a749-4540-9ac3-715968ef4df4" data-linktype="relative-path">supporting server</a></span>,
and MUST be successfully openable via a call to <span><a href="de086803-3f83-44ec-9bd3-417216c171c8" data-linktype="relative-path">rpc_QMOpenQueueInternal</a></span>
with a <i>dwDesiredAccess</i> level of MQ_SEND_ACCESS (0x00000002).</p><p><b>ptb: </b>A <span><a href="4debed0c-8ae5-4629-86d5-a0b1f273afb3" data-linktype="relative-path">CACTransferBufferV2</a></span>
structure pointer as described in section 2.2.3.3. See the identical parameter
in section 3.1.5.2 for details on this parameter.</p><p><b>pMessageID: </b>An OBJECTID as defined in [MS-MQMQ]
section <span><a href="../ms-mqmq/653f80a3-6585-4cca-bb7f-5154b4ad0fab" data-linktype="relative-path">2.2.8</a></span>.
See the identical parameter in section 3.1.5.2 for details on this parameter.</p><p><b>Return Values: </b> On success, this method MUST return
MQ_OK (0x00000000); otherwise, the server MUST return a failure <span><a href="../ms-dtyp/a9046ed2-bfb2-4d56-a719-2824afce59ac" data-linktype="relative-path">HRESULT</a></span>,<a id="Appendix_A_Target_67"></a><a aria-label="Product behavior note 67" href="3d105257-668f-4768-83fe-344c8405a5a5#Appendix_A_67" data-linktype="relative-path">&lt;67&gt;</a> and the client MUST treat all
failure HRESULTs identically. Additionally, if a failure HRESULT is returned,
the client MUST disregard all out-parameter values.</p><p>Exceptions Thrown: No exceptions are thrown beyond those
thrown by the underlying RPC protocol, as specified in [MS-RPCE].</p><p>This method is invoked at the dynamically assigned <span><a href="102555d1-0dbf-4b2e-b78c-e388823d252c#gt_b91c1e27-e8e0-499b-8c65-738006af72ee" data-linktype="relative-path">endpoint</a></span>
returned by the <span><a href="a8c96155-a7e6-41cb-95c7-6ab7e4f8214d" data-linktype="relative-path">R_QMGetRTQMServerPort</a></span>
method when IP_HANDSHAKE (0x00000000) or IPX_HANDSHAKE (0x00000002) is the
interface specified by the <i>fIP</i> parameter.</p><p>When processing this call, the server MUST:</p><ul><li><p><span><span> 
</span></span>Determine if input parameter values violate constraints specified
above. If an invalid parameter is detected, the server MUST take no further
action and return a failure HRESULT.</p>
</li><li><p><span><span> 
</span></span>Open the queue identified by <i>pQueueFormat</i> by invoking
rpc_QMOpenQueueInternal with <i>dwDesiredAccess</i> of MQ_SEND_ACCESS
(0x00000002). </p>
</li><li><p><span><span> 
</span></span>If this process is successful:</p>
<ul><li><p><span><span>  </span></span>With
the queue handle obtained from rpc_QMOpenQueueInternal, invoke
rpc_ACSendMessageEx as specified in section 3.1.5.2.</p>
</li><li><p><span><span>  </span></span>Invoke
<span><a href="5a119af6-39a6-474a-9f40-80d38b5268f9" data-linktype="relative-path">rpc_ACCloseHandle</a></span>
to dispose the handle obtained above. Return the result of rpc_ACSendMessageEx.</p>
</li></ul></li><li><p><span><span> 
</span></span>Else:</p>
<ul><li><p><span><span>  </span></span> Return
a failure <b>HRESULT</b>.</p>
</li></ul></li></ul></div>