RUI_INIT
RUI_INIT谓词将指定逻辑单元 (LU) 的控制权转移到 Microsoft® Windows® 逻辑单元应用程序 (LUA) 应用程序。 RUI_INIT 在系统服务控制点 (SSCP) 与指定的 LU 之间建立会话。
注意
对于 3270 个模拟器用户,添加了 Microsoft Host Integration Server 扩展,使你能够使用 3270 个 LU,而不是 LUA LU。 有关详细信息,请参阅本主题中的备注。
以下结构描述了 RUI_INIT 使用的谓词控制块 (VCB) 的LUA_COMMON成员。
语法
struct LUA_COMMON {
unsigned short lua_verb;
unsigned short lua_verb_length;
unsigned short lua_prim_rc;
unsigned long lua_sec_rc;
unsigned short lua_opcode;
unsigned long lua_correlator;
unsigned char lua_luname[8];
unsigned short lua_extension_list_offset;
unsigned short lua_cobol_offset;
unsigned long lua_sid;
unsigned short lua_max_length;
unsigned short lua_data_length;
char FAR * lua_data_ptr;
unsigned long lua_post_handle;
struct LUA_TH lua_th;
struct LUA_RH lua_rh;
struct LUA_FLAG1 lua_flag1;
unsigned char lua_message_type;
struct LUA_FLAG2 lua_flag2;
unsigned char lua_resv56[7];
unsigned char lua_encr_decr_option;
};
成员
lua_verb
提供的参数。 包含谓词代码、请求单元接口 (RUI) 谓词的LUA_VERB_RUI。
lua_verb_length
提供的参数。 指定 LUA VCB 的长度(以字节为单位)。 它必须包含要发出的谓词记录的长度。
lua_prim_rc
由 LUA 在谓词完成时设置的主要返回代码。 有效的返回代码因发出的 LUA 谓词而异。
lua_sec_rc
由 LUA 在谓词完成时设置的辅助返回代码。 有效的返回代码因发出的 LUA 谓词而异。
lua_opcode
提供的参数。 包含 LUA 命令代码 (要发出的谓词操作代码) ,LUA_OPCODE_RUI_INIT。
lua_correlator
提供的参数。 包含用户提供的值,该值将谓词与其他用户提供的信息链接在一起。 LUA 不使用或更改此信息。 此参数是可选的。
lua_luname
提供的参数。 指定 Windows LUA 会话使用的本地 LU 的 ASCII 名称。
RUI_INIT 需要此参数。
此参数长度为 8 个字节,如果名称短于 8 个字符,则用空格 (0x20) 在右侧填充。
lua_extension_list_offset
HOST Integration Server 中的 RUI 未使用,应设置为零。
lua_cobol_offset
主机集成服务器中的 LUA 未使用,应为零。
lua_sid
返回的参数。 指定会话标识符。
lua_max_length
RUI_INIT不使用,应设置为零。
lua_data_length
RUI_INIT不使用,应设置为零。
lua_data_ptr
RUI_INIT不使用,应设置为零。
lua_post_handle
提供的参数。 如果异步通知要由事件完成,则用于 Microsoft® Windows Server 下。 此变量包含要发出信号的事件的句柄或窗口句柄。
lua_th
RUI_INIT不使用,应设置为零。
lua_rh
RUI_INIT不使用,应设置为零。
lua_flag1
RUI_INIT不使用,应设置为零。
lua_message_type
指定入站或出站 SNA 命令和数据的类型。 这是 RUI_INIT返回的参数。 可能的值为:
LUA_MESSAGE_TYPE_LU_DATA
LUA_MESSAGE_TYPE_SSCP_DATA
LUA_MESSAGE_TYPE_BID
LUA_MESSAGE_TYPE_BIND
LUA_MESSAGE_TYPE_BIS
LUA_MESSAGE_TYPE_CANCEL
LUA_MESSAGE_TYPE_CHASE
LUA_MESSAGE_TYPE_CLEAR
LUA_MESSAGE_TYPE_CRV
LUA_MESSAGE_TYPE_LUSTAT_LU
LUA_MESSAGE_TYPE_LUSTAT_SSCP
LUA_MESSAGE_TYPE_QC
LUA_MESSAGE_TYPE_QEC
LUA_MESSAGE_TYPE_RELQ
LUA_MESSAGE_TYPE_RQR
LUA_MESSAGE_TYPE_RTR
LUA_MESSAGE_TYPE_SBI
LUA_MESSAGE_TYPE_SHUTD
LUA_MESSAGE_TYPE_SIGNAL
LUA_MESSAGE_TYPE_SDT
LUA_MESSAGE_TYPE_STSN
LUA_MESSAGE_TYPE_UNBIND
会话级别接口 (SLI) 通过 LUA 接口扩展例程接收和响应 BIND、CRV 和 STSN 请求。
LU_DATA、LUSTAT_LU、LUSTAT_SSCP和SSCP_DATA不是 SNA 命令。
lua_flag2
返回的参数。 包含 LUA 返回的消息的标志。
lua_flag2.async
指示 LUA 接口谓词在设置为 1 时异步完成。
RUI_INIT 始终以异步方式完成,除非返回错误(例如LUA_PARAMETER_CHECK) )。
lua_resv56
提供的参数。 RUI_INIT和SLI_OPEN使用的保留字段。 数组中的所有其他保留字段都必须留空。 有关详细信息,请参阅“备注”部分中有关这些 Host Integration Server 扩展的讨论。
lua_resv56[1]
提供的参数。 指示除了 LUA LU 之外,RUI 应用程序是否可以访问配置为 3270 LU 的 LU。 如果此参数不为零,则可以访问 3270 LU。
lua_resv56[2]
提供的参数。 指示当 LU-SSCP 会话或连接消失时,RUI 库是否会释放 LU。 如果此参数为非零,则不会释放 LU。
lua_resv56[3]
提供的参数。 指示是否支持不完整的读取。 如果此参数设置为非零值,则支持不完整或截断的读取。 有关更多详细信息,请参阅 RUI_READ的备注。
lua_resv56[4]
提供的参数。 指示 RUI 库是否允许应用程序在主机上回收 LU 时保留 LU。 如果此参数不为零,则应用程序可以保留 LU。
lua_encr_decr_option
加密选项的字段。 在 RUI_INIT 上,仅支持以下各项:
lua_encr_decr_option = 0
lua_encr_decr_option = 128
不支持从 1 到 127 的值。
返回代码
LUA_OK
主要返回代码;谓词已成功执行。
LUA_CANCELED
主返回代码;谓词未成功完成,因为它已被另一个谓词取消。
LUA_TERMINATED
辅助返回代码; RUI_TERM 是在 RUI_INIT 完成之前发出的。
LUA_PARAMETER_CHECK
主要返回代码;由于参数错误,谓词未执行。
LUA_INVALID_LUNAME
辅助返回代码; lua_luname 参数与配置文件中的任何 LUA LU 名称或 LU 池名称都不匹配。
LUA_INVALID_POST_HANDLE
辅助返回代码;对于使用事件作为异步过帐方法的 Windows 操作系统,Windows LUA VCB 不包含有效的事件句柄。
LUA_RESERVED_FIELD_NOT_ZERO
辅助返回代码;谓词记录中的保留字段或此谓词未使用的参数设置为非零值。
LUA_VERB_LENGTH_INVALID
辅助返回代码;LUA 谓词的发出值为 lua_verb_length 意外。
LUA_STATE_CHECK
主要返回代码;谓词未执行,因为它是在无效状态下发出的。
LUA_DUPLICATE_RUI_INIT
辅助返回代码; lua_luname 参数指定了此应用程序已在使用的 LU 名称或 LU 池名称 (,或者此应用程序已在 ) RUI_INIT。
LUA_UNSUCCESSFUL
主返回代码;提供的谓词记录有效,但谓词未成功完成。
LUA_COMMAND_COUNT_ERROR
次要返回代码,指示发生了以下错误之一:
无法发出谓词,因为应用程序已达到其活动会话的最大数目。 在 Windows 上,一个应用程序随时可以有多达 15,000 个会话处于活动状态。
谓词指定了 LU 池的名称或池中 LU 的名称,但池中的所有 LU 都在使用中。
LUA_ENCR_DECR_LOAD_ERROR
辅助返回代码;谓词为 0 或 128 以外的 lua_encr_decr_option 指定值。
LUA_INVALID_PROCESS
辅助返回代码; lua_luname 指定的 LU 正在由另一个进程使用。
LUA_LINK_NOT_STARTED
辅助返回代码;与主机的连接尚未启动;它可以使用的链接服务都没有处于活动状态。
LUA_COMM_SUBSYSTEM_ABENDED
主要返回代码;指示以下状况之一:
此对话使用的节点遇到了 ABEND。
(LAN 错误) ,事务程序 (TP) 与物理单元 (PU) 2.1 节点之间的连接已断开。
TP 计算机上的 SnaBase 遇到 ABEND。
LUA_SESSION_FAILURE
主返回代码;必需的 Host Integration Server 组件已终止。LUA_LU_COMPONENT_DISCONNECTED
辅助返回代码;指示 LUA 会话由于链接服务或主机 LU 出现问题而失败。
LUA_INVALID_VERB
主返回代码;谓词代码或操作代码或两者都无效。 谓词未执行。LUA_STACK_TOO_SMALL
主要返回代码;应用程序的堆栈大小太小,无法执行谓词。 增加应用程序的堆栈大小。LUA_COMM_SUBSYSTEM_NOT_LOADED
主返回代码;处理谓词时,无法加载或终止所需的组件。 因此无法通信。 请联系系统管理员以执行纠正措施。LUA_UNEXPECTED_DOS_ERROR
主返回代码;发出操作系统调用后,收到意外的操作系统返回代码,并在辅助返回代码中指定。
注解
此谓词必须是为会话发出的第一个 LUA 谓词。 在此谓词成功完成之前,可为此会话发出的唯一其他 LUA 谓词是 RUI_TERM (终止挂起 RUI_INIT) 。
此会话上发出的所有其他谓词都必须使用此谓词中的以下参数之一来标识会话:
在 lua_sid 中返回到应用程序的会话标识符。
LU 名称或 LU 池名称,由 应用程序在 lua_luname 参数中提供。
从 主机收到 ACTLU 消息后,RUI_INIT完成。 如有必要,谓词将无限期等待。 如果在 RUI_INIT之前已收到 ACTLU,则 LUA 会向主机发送一个通知,以通知它 LU 已准备好使用。
ACTLU 和 NOTIFY 都不对 LUA 应用程序可见。
RUI_INIT成功完成后,此会话将使用为其启动会话的 LU。 在发出RUI_TERM或收到LUA_SESSION_FAILURE主返回代码之前,此或任何其他应用程序的其他 LUA 会话) ( 都无法使用 LU。
使用 3270 LU
为了使 3270 仿真器用户能够将仿真器接口规范 (EIS) 配置调用与 RUI API 配合使用,已在 RUI 中添加了 Host Integration Server 扩展。 此扩展允许使用 3270 个 LU,而不是 LUA LU。 如果应用程序在RUI_INIT调用中将 lua_resv56[1] 设置为非零值,则可以使用 3270 LU。
不释放 LU
如果应用程序在RUI_INIT调用中将 lua_resv56[2] 设置为非零值,则当 LU-SSCP 会话或连接消失时,RUI 库将不会释放 LU。 启用此 Host Integration Server 扩展后,应用程序不必在会话失败或连接失败后发出新的 RUI_INIT 。 当 LU-SSCP 会话恢复 (应用程序可以使用 WinRUIGetLastInitStatus 检测此) 时,应用程序可以再次开始使用它。
在此会话上支持分块
如果应用程序在RUI_INIT会话建立时将 lua_resv56[3] 设置为非零值,则会启用可以更改RUI_READ行为的 Host Integration Server 扩展。 RUI_READ调用的默认行为是截断数据 (如果应用程序的数据缓冲区不足以接收 RU 中的所有数据,则丢弃) 剩余的任何数据,并返回错误代码。 当 lua_resv56[3] 在 RUI_INIT 调用中设置为非零值时,如果应用程序的数据缓冲区不够大,则发出的 RUI_READ 不会导致 RU 数据被丢弃。 RUI_READ谓词将返回主要返回代码的成功 (LUA_OK) ,辅助返回代码返回LUA_DATA_INCOMPLETE。 然后,可以发出后续 RUI_READ 请求来检索超出应用程序数据缓冲区的数据。
忽略 DACTLUs
如果应用程序在RUI_INIT会话建立中将 lua_resv56[4] 设置为非零值,这将启用 Host Integration Server 扩展,并且 RUI 库将允许应用程序保留 LU(如果 LU 在主机 (即停用和重新激活) )。
注意
所有其他保留字段必须留空。
有关详细信息,请参阅 3270 仿真器接口规范的软件开发工具包 (SDK) 帮助部分中的 sepdcrec 函数的说明。
Encryption
会话级加密是通过加密验证 (CRV) 请求实现的。 RUI 应用程序必须对这些请求执行所有必要的处理。 对于除 RUI 以外的所有接口,主机集成服务器会拒绝 CRV 请求,但响应为负。
对于 RUI_INIT,支持以下选项:
lua_encr_decr_option = 0
lua_encr_decr_option = 128
不支持从 1 到 127 的值 (ACSRENCR 和 ACSROECR 例程) 。
发送应用程序负责将数据填充到 8 个字节的倍数,并在 RH 中设置填充的数据指示器位以及加密。 接收应用程序负责在解密后删除填充。