IBM MQ API 出口上下文结构 (MQAXC)

MQAXC 结构 (外部控制块) 用作 API 出口的输入参数。

MQAXC 具有以下 C 声明:
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 出口不会在客户机上运行,也不会看到任何不同的情况。

如果出口确实需要确定它是否在客户机上运行,那么出口可以通过查看 ChannelNameChannelDefinition 字段来执行此操作。

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 调用时,不会在服务器上提供通道定义。 此外,如果指针被填充,指针指向的结构 (和任何子结构) 必须被视为只读; 结构的任何更新都将导致不可预测的结果,并且不受支持。

对于客户机,除具有为客户机指定的值的字段以外的字段包含适用于客户机应用程序的值。