IBM MQ API 出口上下文结构 (MQAXC)
MQAXC 结构 (外部控制块) 用作 API 出口的输入参数。
typedef struct tagMQAXC {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG Environment; /* Environment */
MQCHAR12 UserId; /* UserId associated with appl */
MQBYTE40 SecurityId /* Extension to UserId running appl */
MQCHAR264 ConnectionName; /* Connection name */
MQLONG LongMCAUserIdLength; /* long MCA user identifier length */
MQLONG LongRemoteUserIdLength; /* long remote user identifier length */
MQPTR LongMCAUserIdPtr; /* long MCA user identifier address */
MQPTR LongRemoteUserIdPtr; /* long remote user identifier address */
MQCHAR28 ApplName; /* Application name */
MQLONG ApplType; /* Application type */
MQPID ProcessId; /* Process identifier */
MQTID ThreadId; /* Thread identifier */
/* Ver:1 */
MQCHAR ChannelName[20] /* Channel Name */
MQBYTE4 Reserved1; /* Reserved */
PMQCD pChannelDefinition; /* Channel Definition pointer */
};
MQAXC 的参数为:- StrucId (MQCHAR4)-输入
- 出口上下文结构标识,值为
MQAXC_STRUC_ID。 对于 C 程序,还定义了常量 MQAXC_STRUC_ID_ARRAY ,其值与 MQAXC_STRUC_ID 相同,但作为字符数组而不是字符串。出口处理程序将入口上的此字段设置为每个出口函数。
- 版本 (MQLONG)-输入
- 结构版本号,值为:
- MQAXC_VERSION_2
- 出口上下文结构的版本号。
- MQAXC_CURRENT_VERSION
- 出口上下文结构的当前版本号。
- 环境 (MQLONG)-输入
- 从中发出 IBM® MQ API 调用并导致驱动出口函数的环境。 此字段的有效值为:
- MQXE_OTHER
- 此值与 API 出口在从服务器应用程序调用该出口时看到的调用一致。 这意味着 API 出口不会在客户机上运行,也不会看到任何不同的情况。
如果出口确实需要确定它是否在客户机上运行,那么出口可以通过查看 ChannelName 和 ChannelDefinition 字段来执行此操作。
- MQXE_MCA
- 消息通道代理程序
- MQXE_MCA_SVRCONN
- 代表客户机执行操作的消息通道代理程序
- MQXE_COMMAND_SERVER
- 命令服务器
- MQXE_MQSC
- runmqsc 命令解释器
- UserId (MQCHAR12)-输入
- 与应用程序关联的用户标识。 特别是,对于客户机连接,此字段包含采用的用户的用户标识,而不是运行通道代码的用户标识。 如果空白用户标识来自客户机,那么不会对已在使用的用户标识进行任何更改。 即,不采用新的用户标识。
出口处理程序将入口上的此字段设置为每个出口函数。 此字段的长度由 MQ_USER_ID_LENGTH 给出。
对于客户机,这是从客户机发送到服务器的用户标识。 请注意,这可能不是客户机在队列管理器中针对其运行的有效用户标识,因为可能存在更改用户标识的 MCAUser 或 CHLAUTH 配置。
- SecurityId (MQBYTE40)-输入
- 对运行应用程序的用户标识的扩展。 其长度由 MQ_SECURITY_ID_LENGTH 提供。
对于客户机,这是从客户机发送到服务器的用户标识。 请注意,这可能不是客户机在队列管理器中针对其运行的有效用户标识,因为可能存在更改用户标识的 MCAUser 或 CHLAUTH 配置。
- ConnectionName (MQCHAR264)-输入
- 连接名称字段,设置为客户机的地址。 例如,对于 TCP/IP ,它将是客户机 IP 地址。
此字段的长度由 MQ_CONN_NAME_LENGTH 给出。
对于客户机,这是队列管理器的伙伴地址。
- LongMCAUserIdLength(MQLONG) - 输入
- 长 MCA 用户标识的长度。
当 MCA 连接到队列管理器时,此字段设置为长 MCA 用户标识的长度 (如果没有这样的标识,则设置为零)。
对于客户机,这是客户机长用户标识。
- LongRemoteUserIdLength(MQLONG) - 输入
- 长远程用户标识的长度。
当 MCA 连接到队列管理器时,此字段设置为长远程用户标识的长度。 否则,此字段将设置为零
对于客户机,请将此字段设置为零。
- LongMCAUserIdPtr(MQPTR) - 输入
- 长 MCA 用户标识的地址。
当 MCA 连接到队列管理器时,此字段设置为长 MCA 用户标识的地址 (如果没有这样的标识,那么设置为空指针)。
对于客户机,这是客户机长用户标识。
- LongRemoteUserIdPtr(MQPTR) - 输入
- 长远程用户标识的地址。
当 MCA 连接到队列管理器时,此字段设置为长远程用户标识的地址 (如果没有此类标识,那么设置为空指针)。
对于客户机,请将此字段设置为零。
- ApplName (MQCHAR28)-输入
- 发出 IBM MQ API 调用的应用程序或组件的名称。
生成 ApplName 的规则与生成 MQPUT 的缺省名称的规则相同。
通过查询操作系统以获取程序名,可找到此字段的值。 其长度由 MQ_APPL_NAME_LENGTH 指定。
- ApplType (MQLONG)-输入
- 发出 IBM MQ API 调用的应用程序或组件的类型。
对于编译应用程序的平台,该值为 MQAT_DEFAULT ,或者等于其中一个定义的 MQAT_ * 值。
出口处理程序将入口上的此字段设置为每个出口函数。
- ProcessId (MQPID)-输入
- 操作系统进程标识。
在适用的情况下,出口处理程序会在进入每个出口函数时设置此字段。
- ThreadId (MQTID)-输入
- MQ 线程标识。 这是 MQ 跟踪和 FFST 转储中使用的相同标识,但可能与操作系统线程标识不同。
在适用的情况下,出口处理程序会在进入每个出口函数时设置此字段。
- ChannelName (MQCHAR)-输入
- 用空白填充的通道名称 (如果适用) 和已知的通道名称。
如果不适用,那么此字段将设置为 NULL 字符。
- Reserved1 (MQBYTE4)-输入
- 此字段是保留的。
- ChanneDefinition (PMQCD)-输入
- 指向正在使用的通道定义 (如果适用且已知) 的指针。
如果不适用,那么此字段将设置为 NULL 字符。
请注意,仅当正在代表 IBM MQ 通道处理连接并且已读取该通道定义时,才会完成该指针。
尤其是,当对通道进行第一次 MQCONN 调用时,不会在服务器上提供通道定义。 此外,如果指针被填充,指针指向的结构 (和任何子结构) 必须被视为只读; 结构的任何更新都将导致不可预测的结果,并且不受支持。
对于客户机,除具有为客户机指定的值的字段以外的字段包含适用于客户机应用程序的值。