3.1.4.10 R_QMSetObjectProperties (Opnum 11)

The R_QMSetObjectProperties method is called by a client to update properties of a local private queue.

 HRESULT R_QMSetObjectProperties(
   [in] handle_t hBind,
   [in] struct OBJECT_FORMAT* pObjectFormat,
   [in, range(1, 128)] DWORD cp,
   [in, unique, size_is(cp)] DWORD aProp[],
   [in, unique, size_is(cp)] PROPVARIANT apVar[]
 );

hBind:  MUST be set to an RPC binding handle as described in [MS-RPCE] section 2.

pObjectFormat:  MUST point to an OBJECT_FORMAT structure which identifies an existing local private queue on the supporting server. MUST NOT be NULL. The ObjType member of the structure MUST be 0x00000001. The pQueueFormat member MUST NOT be NULL.

cp:  MUST be set to the size (in elements) of the arrays aProp and apVar. The arrays aProp and apVar MUST have an identical number of elements, and MUST contain at least one element.

aProp:  MUST be an array of queue property identifiers for properties to be updated. Each element MUST specify a value from the queue property identifiers table defined in [MS-MQMQ] section 2.3.1. Each element MUST specify the queue property identifier for the corresponding queue property value at the same element index in apVar. MUST contain at least one element.

apVar:  MUST be an array that specifies the property values to update. Each element MUST specify the property value for the corresponding property identifier at the same element index in aProp. MUST contain at least one element. The vt (VARTYPE) member of each PROPVARIANT element MUST be set to the appropriate type for the property being updated; otherwise, the server SHOULD return the failure HRESULT MQ_ERROR_PROPERTY (0xc00e0002).<39> Queue properties and their appropriate VARTYPEs are specified by [MS-MQMQ] section 2.3.1.

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

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

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

When processing this call, the server MUST:

  • 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.

  • Locate a Queue ([MS-MQDMPR] section 3.1.1.2) ADM element instance in the QueueCollection attribute of the server's LocalQueueManager ([MS-MQDMPR] section 3.1.1.2) ADM element instance identified by the pObjectFormat parameter.

  • If no entry is resolved, return a failure HRESULT.

  • Update the attributes of the Queue ADM element instance using the values contained in aProp and apVar. Queue property identifiers and their associated Queue ADM element attributes are specified in section 3.1.1.12.

  • Return MQ_OK (0x00000000).