共用方式為


RUI_INIT

RUI_INIT動詞命令會將指定邏輯單元 (LU) 的控制傳送至 Microsoft® Windows® 邏輯單元應用程式 (LUA) 應用程式。 RUI_INIT 建立系統服務控制點 (SSCP) 與指定 LU 之間的工作階段。

備註

針對 3270 模擬器使用者,已新增Microsoft主機整合伺服器擴充功能,可讓您使用 3270 RU,而不是 LUA RU。 如需詳細資訊,請參閱本主題中的。

下列結構描述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個字節,以空格(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

指出如果設定為 1,LUA 介面動詞動詞會以異步方式完成。

除非RUI_INIT 傳回LUA_PARAMETER_CHECK之類的錯誤,否則一律會以異步方式完成。

lua_resv56
提供的參數。 RUI_INITSLI_OPEN所使用的保留欄位。 陣列中的所有其他保留欄位都必須保留空白。 如需詳細資訊,請參閱一節中這些主機整合伺服器擴充功能的討論。

lua_resv56[1]

提供的參數。 指出除了 LUA RU 之外,RUI 應用程式是否可以存取設定為 3270 RU 的 RU。 如果此參數為非零值,則可以存取 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 名稱,但集區中的所有 RU 都正在使用中。

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
    主要傳回碼;必要的主機整合伺服器元件已終止。

    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 會將 NOTIFY 傳送給主機,通知它已準備好使用 LU。

    LUA 應用程式看不到 ACTLU 和 NOTIFY。

    RUI_INIT成功完成之後,此會話會使用啟動會話的 LU。 沒有其他 LUA 工作階段(來自此或任何其他應用程式)可以使用 LU,直到發出 RUI_TERM ,或直到收到LUA_SESSION_FAILURE主要傳回碼為止。

使用 3270 RU

為了提供 3270 模擬器用戶能夠搭配 RUI API 使用模擬器介面規格 (EIS) 組態呼叫,主機整合伺服器擴充功能已新增至 RUI。 此延伸模組可讓您使用 3270 RU,而不是 LUA RU。 如果應用程式將 lua_resv56[1] 設定為 RUI_INIT 呼叫上的非零值,則可以使用 3270 RU。

不要釋放 LU

如果應用程式將 lua_resv56[2] 設定為 RUI_INIT 呼叫上的非零值,則當 LU-SSCP 會話或連線消失時,RUI 連結庫將不會釋放 LU。 啟用此主機整合伺服器擴充功能時,應用程式不需要在會話失敗或連線失敗之後發出新的 RUI_INIT 。 當 LU-SSCP 會話備份時(應用程式可以使用 WinRUIGetLastInitStatus 來偵測此狀況),應用程式就可以再次開始使用它。

支援此工作階段上的區塊處理

如果應用程式將 lua_resv56[3] 設定為 RUI_INIT 會話建立上的非零值,這會啟用主機整合伺服器擴充功能,以變更 RUI_READ的行為。 如果應用程式的數據緩衝區不夠大,無法接收 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 會話建立上的非零值,這會啟用主機整合伺服器擴充功能,而且 RUI 連結庫會允許應用程式在主機回收 LU 時保留 LU(也就是停用和重新啟用)。

備註

所有其他保留欄位都必須保留空白。

如需詳細資訊,請參閱 3270 模擬器介面規格之軟體開發工具包 (SDK) 說明一節中的 sepdcrec 函式描述。

加密

會話層級密碼編譯是透過密碼編譯驗證 (CRV) 要求來實作。 RUI 應用程式必須執行這些要求的所有必要處理。 針對 RUI 以外的所有介面,CRV 要求會遭到主機整合伺服器的負面回應拒絕。

針對 RUI_INIT,支援下列選項:

  • lua_encr_decr_option = 0

  • lua_encr_decr_option = 128

    不支援從 1 到 127 的值(ACSRENCR 和 ACSROECR 例程)。

    傳送應用程式負責將數據填補為八個字節的倍數,以及在 RH 中設定填補的數據指標位,以及加密。 接收應用程式負責在解密後移除填補。

另請參閱

RUI_TERM
SLI_OPEN