RUI_INIT

RUI_INIT谓词将指定逻辑单元(LU)的控制传输到Microsoft® Windows® 逻辑单元应用程序(LUA)应用程序。 RUI_INIT 在系统服务控制点(SSCP)和指定的 LU 之间建立会话。

注释

对于 3270 仿真器用户,添加了一个Microsoft Host Integration Server 扩展,使你能够使用 3270 RU,而不是 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
提供的参数。 包含谓词代码,LUA_VERB_RUI请求单元接口(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
主机集成服务器中的 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_INITSLI_OPEN使用的保留字段。 数组中的所有其他保留字段都必须留空。 有关详细信息,请参阅“备注”部分中这些 Host Integration Server 扩展的讨论。

lua_resv56[1]

提供的参数。 指示 RUI 应用程序是否可以访问配置为 3270 RU 的 RU,以及 LUA LU。 如果此参数为非零,可以访问 3270 RU。

lua_resv56[2]

提供的参数。 指示当 LU-SSCP 会话或连接消失时,RUI 库是否会释放 LU。 如果此参数为非零,则不会释放 LU。

lua_resv56[3]

提供的参数。 指示是否支持不完整的读取。 如果此参数设置为非零值,则支持不完整或截断的读取。 有关更多详细信息,请参阅 有关RUI_READ的备注。

lua_resv56[4]

提供的参数。 指示如果应用程序在主机上回收,则 RUI 库是否允许应用程序保留 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 意外 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。

  • 事务程序(TP)与物理单元(PU)2.1 节点之间的连接已中断(LAN 错误)。

  • 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中的应用程序。

  • 应用程序在 lua_luname 参数中提供的 LU 名称或 LU 池名称。

    RUI_INIT 从主机收到 ACTLU 消息后完成。 如有必要,谓词将无限期等待。 如果在 RUI_INIT之前已收到 ACTLU,则 LUA 会向主机发送通知,告知其 LU 已准备好使用。

    ACTLU 和 NOTIFY 都不对 LUA 应用程序可见。

    RUI_INIT成功完成后,此会话将使用启动会话的 LU。 在发出 RUI_TERM 或收到LUA_SESSION_FAILURE主返回代码之前,任何其他 LUA 会话(来自此应用程序或任何其他应用程序)都无法使用 LU。

使用 3270 RU

若要为 3270 个模拟器用户提供将模拟器接口规范(EIS)配置调用与 RUI API 配合使用的功能,主机集成服务器扩展已添加到 RUI。 此扩展允许使用 3270 RU,而不是 LUA LU。 如果应用程序在RUI_INIT调用中将 lua_resv56[1] 设置为非零值,则可以使用 3270 RU。

请勿释放 LU

如果应用程序在RUI_INIT调用时将 lua_resv56[2] 设置为非零值,则当 LU-SSCP 会话或连接消失时,RUI 库将不会释放 LU。 启用此 Host Integration Server 扩展后,应用程序无需在会话失败或连接失败后发出新的 RUI_INIT 。 当 LU-SSCP 会话恢复时(应用程序可以使用 WinRUIGetLastInitStatus 来检测此情况),应用程序可以再次开始使用它。

支持此会话上的分块

如果应用程序 将 lua_resv56[3] 设置为 RUI_INIT 会话建立上的非零值,则启用可以更改 RUI_READ行为的 Host Integration Server 扩展。 如果应用程序的数据缓冲区不够大,无法接收 RU 中的所有数据, 则RUI_READ 调用的默认行为是截断数据(丢弃剩余的数据),并返回错误代码。 当 lua_resv56[3]RUI_INIT调用中设置为非零值时,发出RUI_READ,其中应用程序的数据缓冲区不够大,将导致 RU 数据被丢弃。 RUI_READ谓词将返回主要返回代码的成功(LUA_OK),并为辅助返回代码返回LUA_DATA_INCOMPLETE。 随后可以发出 RUI_READ 请求,以检索超出应用程序数据缓冲区的数据。

忽略 DACTLU

如果应用程序 将 lua_resv56[4] 设置为 RUI_INIT 会话建立上的非零值,这将启用 Host Integration Server 扩展,并且 RUI 库将允许应用程序在主机(即停用和重新激活)上回收时保留 LU。

注释

所有其他保留字段都必须留空。

有关详细信息,请参阅 3270 仿真器接口规范上的软件开发工具包(SDK)帮助部分中 sepdcrec 函数的说明。

加密

会话级加密是通过加密验证(CRV)请求实现的。 RUI 应用程序必须对这些请求执行所有必要的处理。 对于除 RUI 以外的所有接口,主机集成服务器会拒绝 CRV 请求,并得到负响应。

对于 RUI_INIT,支持以下选项:

  • lua_encr_decr_option = 0

  • lua_encr_decr_option = 128

    不支持从 1 到 127 的值(ACSRENCR 和 ACSROECR 例程)。

    发送应用程序负责将数据填充到 8 个字节的倍数,以及在 RH 中设置填充的数据指示器位以及加密。 接收应用程序负责在解密后删除填充。

另请参阅

RUI_TERM
SLI_OPEN