3.1.4.20 rpc_ACSetCursorProperties (Opnum 23)

A client calls the rpc_ACSetCursorProperties method to associate a remote cursor created via R_QMCreateRemoteCursor (section 3.1.4.4) with a local CursorProxy (section 3.1.1.6) created using rpc_ACCreateCursorEx (section 3.1.5.4).

Note This method is obsolete. The server SHOULD take no action and return MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064).<55>

 HRESULT rpc_ACSetCursorProperties(
   [in] RPC_QUEUE_HANDLE hProxy,
   [in] DWORD hCursor,
   [in] DWORD hRemoteCursor
 );

hProxy: MUST contain the RPC_QUEUE_HANDLE (section 2.2.1.1.2) context handle passed to rpc_ACCreateCursorEx when the cursor specified by hCursor was created.

hCursor: MUST contain a CursorProxy.Handle obtained from the pcc.hCursor out-parameter of rpc_ACCreateCursorEx.

hRemoteCursor: MUST contain a Cursor.Handle for a remote cursor acquired from the phCursor out-parameter of R_QMCreateRemoteCursor invoked at a remote queue manager.

Return Values:  On success, this method MUST return MQ_OK (0x00000000); otherwise, the server MUST return a failure HRESULT, and the client MUST treat all failure HRESULTs identically.

This method is obsolete. Servers SHOULD take no action and return MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064). Servers SHOULD contact the remote queue manager on behalf of the client when rpc_ACCreateCursorEx is called to create a remote cursor.

Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified in [MS-RPCE].

During the client cursor creation sequence, the supporting server MAY indicate that the client MUST contact a remote queue manager to proceed.<56> In response, the client MUST call R_QMGetRemoteQueueName (section 3.1.4.1) to determine the remote queue manager name and MUST then invoke R_QMCreateRemoteCursor at the remote queue manager. Next, the client MUST call this method to associate the Cursor.Handle obtained from R_QMCreateRemoteCursor with the original CursorProxy.Handle obtained from rpc_ACCreateCursorEx.

This method is invoked at the dynamically assigned endpoint returned by the R_QMGetRTQMServerPort (section 3.1.4.24) method when IP_HANDSHAKE (0x00000000) or IPX_HANDSHAKE (0x00000002) is the interface specified by the fIP parameter.

When processing this call, the server MUST:

  • Locate a RemoteQueueProxyHandle (section 3.1.1.5) in the server's RemoteQueueProxyHandleTable (section 3.1.1.4) where RemoteQueueProxyHandle.Handle equals hProxy.

  •  If no such RemoteQueueProxyHandle exists, take no further action and return a failure HRESULT.

  • Locate a CursorProxy in RemoteQueueProxyHandle.CursorProxyCollection where CursorProxy.Handle equals hCursor.

  •  If no such CursorProxy exists, take no further action and return a failure HRESULT.

  • Set CursorProxy.RemoteCursorHandle := hRemoteCursor.

  • Set CursorProxy.IsRemoteCursorHandleInitialized := True.

  • Return MQ_OK (0x00000000).