MsgHandle (MQHMSG)

如果指定了 MQGMO_PROPERTIES_AS_Q_DEF 选项,并且 PropertyControl 队列属性未设置为 MQPROP_FORCE_MQRFH2 ,那么这是将使用从队列中检索的消息的属性填充的消息的句柄。 此句柄由 MQCRTMH 调用创建。 在检索消息之前,将清除已与句柄关联的任何属性。

还可以指定以下值:
MQHM_NONE
未提供消息句柄。

如果提供了有效的消息句柄并在输出中使用该消息句柄来包含消息属性,那么 MQGET 调用上不需要消息描述符,与该消息句柄相关联的消息描述符用于输入字段。

如果在 MQGET 调用上指定了消息描述符,那么它始终优先于与消息句柄关联的消息描述符。

如果指定了 MQGMO_PROPERTIES_FORCE_MQRFH2 ,或者指定了 MQGMO_PROPERTIES_AS_Q_DEF ,并且 PropertyControl 队列属性为 MQPROP_FORCE_MQRFH2 ,那么当未指定消息描述符参数时,调用将失败,原因码为 MQRC_MD_ERROR。

从 MQGET 调用返回时,将更新与此消息句柄相关联的属性和消息描述符,以反映所检索消息的状态 (如果在 MQGET 调用上提供了消息描述符)。 然后,可以使用 MQINQMP 调用来查询消息的属性。

除了消息描述符扩展外,如果存在可使用 MQINQMP 调用查询的属性,那么该属性不会包含在消息数据中; 如果队列上的消息包含在消息数据中的属性,那么在将数据返回到应用程序之前,会将这些属性从消息数据中除去。

如果未提供消息句柄,或者版本低于 MQGMO_VERSION_4 ,那么必须在 MQGET 调用上提供有效的消息描述符。 在受 MQGMO 结构和 PropertyControl 队列属性中的属性选项值限制的消息数据中返回任何消息属性 (消息描述符中包含的属性除外)。

这始终是一个输入字段。 此字段的初始值为 MQHM_NONE。 如果 Version 小于 MQGMO_VERSION_4,那么将忽略此字段。