MC_ALLOCATE

叫用交易程式 (TP) 發出 MC_ALLOCATE 動詞。 它會在本機邏輯單元 (LU) 和夥伴 LU 之間配置會話,以及 (與 RECEIVE_ALLOCATE) 建立叫用 TP 與叫用 TP 之間的交談。 成功執行此動詞之後,APPC 會產生對話標識碼 (conv_id) 。 conv_id是所有其他APPC交談動詞命令的必要參數。

下列結構描述動詞控件區塊 (VCB) 由 MC_ALLOCATE 動詞命令使用。

語法

  
struct mc_allocate {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv2;  
    unsigned short   primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    reserv3;  
    unsigned char    synclevel;  
    unsigned char    reserv4[2];  
    unsigned char    rtn_ctl;  
    unsigned char    reserv5;  
    unsigned long    conv_group_id;  
    unsigned long    sense_data;  
    unsigned char    plu_alias[8];  
    unsigned char    mode_name[8];  
    unsigned char    tp_name[64];  
    unsigned char    security;  
    unsigned char    reserv6[11];  
    unsigned char    pwd[10];  
    unsigned char    user_id[10];  
    unsigned short   pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char    reserv7;  
    unsigned char    fqplu_name[17];  
    unsigned char    reserv8[8];  
    unsigned long    proxy_user;  
    unsigned long    proxy_domain;  
    unsigned char    reserv9[16];  
};   

成員

opcode
提供的參數。 指定動詞作業程序代碼;AP_M_ALLOCATE。

opext
提供的參數。 指定動詞操作延伸模組,AP_MAPPED_CONVERSATION。 如果已設定AP_EXTD_VCB位,這表示使用動詞控制區塊的擴充版本。 在此情況下, MC_ALLOCATE 結構包含同步點支援或特殊許可權 Proxy 功能支援。

reserv2
保留欄位。

primary_rc
傳回的參數。 指定APPC在動詞完成時所設定的主要傳回碼。 有效的傳回碼會根據發出的APPC動詞命令而有所不同。 如需此動詞命令的有效錯誤碼,請參閱傳回碼。

secondary_rc
傳回的參數。 指定APPC在動詞完成時所設定的次要傳回碼。 有效的傳回碼會根據發出的APPC動詞命令而有所不同。 如需此動詞命令的有效錯誤碼,請參閱傳回碼。

tp_id
提供的參數。 識別本機 TP。 此參數的值是由 TP_STARTED 傳回。

conv_id
傳回的參數。 識別兩個 TP 之間建立的交談。

reserv3
保留欄位。

synclevel
提供的參數。 指定交談的同步處理層級。 它會判斷 TP 是否可以要求確認接收數據,以及確認接收數據。

  • AP_NONE指定不會在此交談中使用確認處理。

  • AP_CONFIRM_SYNC_LEVEL指定 TP 可以使用此交談中的確認處理。

  • AP_SYNCPT指定 TP 可以使用此交談中的同步點層級 2 確認處理。

    reserv4
    保留欄位。

    reserv5
    保留欄位。

    rtn_ctl
    提供的參數。 指定本機 LU 在本機 TP 的工作階段要求上何時應該將控制權傳回至本機 TP。 如需會話的相關信息,請參閱 交易程式概觀

  • AP_IMMEDIATE指定 LU 會配置爭用者會話,如果立即可用,則會將控制權傳回給 TP。

  • AP_WHEN_SESSION_ALLOCATED指定在配置會話或遇到本主題傳回碼中所述的其中一個錯誤之前,LU 不會將控制權傳回 TP。 (如果會話限制為零,LU 會立即傳回控件。) 如果會話無法使用,TP 會等候一個。

  • AP_WHEN_SESSION_FREE指定 LU 配置爭用成功者或爭用-loser 工作階段,如果有一個或能夠啟用,並將控制權傳回給 TP。 如果發生錯誤, (如本主題的傳回碼中所述,) 呼叫會立即傳回 ,並在primary_rcsecondary_rc 欄位中立即傳回錯誤。

  • AP_WHEN_CONWINNER_ALLOC指定在配置競爭勝出會話之前,LU 不會傳回控制權,或遇到本主題傳回碼中所述的其中一個錯誤。 (如果會話限制為零,LU 會立即傳回控件。) 如果會話無法使用,TP 會等候一個。

  • AP_WHEN_CONV_GROUP_ALLOC指定在配置 conv_group_id指定的會話之前,LU 不會將控制權傳回給 TP,或遇到本主題中傳回碼中所述的其中一個錯誤。 如果會話無法使用,TP 會等候它變成免費。

注意

AP_IMMEDIATE是永遠不會造成新會話啟動 之rtn_ctl 的唯一值。 對於AP_IMMEDIATE以外的值,如果無法立即使用適當的會話,Microsoft® Host Integration Server 會嘗試啟動一個會話。 這會導致啟動隨選連線。

conv_group_id
提供/傳回的參數。 指定應該從中配置會話之交談群組的標識碼。 只有在rtn_ctl設為 WHEN_CONV_GROUP_ALLOC時,才需要conv_group_id。 當rtn_ctl 指定不同的值,且 primary_rc AP_OK時,這是傳回的值。

sense_data
傳回的參數。 指出 (重試或無重試) 配置錯誤,且包含感知數據。

plu_alias
提供的參數。 指定本機 TP 已知合作夥伴 LU 的別名。

plu_alias必須符合設定期間建立的夥伴 LU 名稱。

參數是8位元組的 ASCII 字元字串。 它可以包含下列 ASCII 字元:

  • 大寫字母

  • 數位 0 到 9

  • 空格

  • 特殊字元 $、#、% 和@

    此字串的第一個字元不能是空格。

    如果此參數的值少於八個字節,請使用 ASCII 空格 (0x20) 將它填補在右側。

    如果您想要使用 fqplu_name 參數指定夥伴 LU,請使用二進位零填入此參數。

    對於使用 TP、5250 模擬器和/或 APPC 應用程式的使用者或群組,系統管理員可以指派預設的本機和遠端 RU。 在此情況下,欄位會保留空白或 Null,而且當使用者或群組成員啟動 APPC 程式時,會存取預設的 LU。

    mode_name
    提供的參數。 指定組態期間定義的一組網路特性名稱。

    mode_name的值必須符合設定期間與夥伴 LU 相關聯的模式名稱。

    參數是8位元組的EBCDIC字元字串。 它可以包含來自 EBCDIC 字元集類型的字元:

  • 大寫字母

  • 數位 0 到 9

  • 特殊字元 $、#和@

    字串中的第一個字元必須是大寫字母或特殊字元。

    請勿在對應的交談中使用 SNASVCMG。 SNASVCMG 是 APPC 內部使用的保留 mode_name

    tp_name
    提供的參數。 指定所叫用 TP 的名稱。 叫用 TP 中MC_ALLOCATE所指定的tp_name值必須符合叫用 TP 中RECEIVE_ALLOCATE所指定的tp_name值。

    參數是64位元組的EBCDIC字元字串,而且區分大小寫。 tp_name 參數可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和 period (.)

    如果 tp_name 少於 64 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右邊。

    SNA 慣例是服務 TP 名稱最多可以有四個字元。 第一個字元是0x00與0x3F之間的十六進位位元組。 其他字元來自 AE EBCDIC 字元集類型。

    安全
    提供的參數。 提供合作夥伴 LU 驗證所叫用 TP 存取權所需的資訊。 請參閱本主題中 安全性參數的可能值 一節。

    Reserv6
    保留欄位。

    pwd
    提供的參數。 指定與 user_id相關聯的密碼。

    只有在安全性設定為 AP_PGM 或 AP_SAME 時,才需要 pwd 參數。 它必須符合設定期間所建立 之user_id 的密碼。

    pwd 參數是10位元組的EBCDIC字元字串,而且區分大小寫。 它可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和 period (.)

    如果密碼少於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右邊。

    如果要使用 APPC 自動登入功能, pwd 字元字串必須硬式編碼為 MS$SAME。 如需詳細資訊,請參閱<備註>一節。

    user_id
    提供的參數。 指定存取合作夥伴 TP 所需的使用者識別碼。 只有在安全性參數設定為 AP_PGM 或 AP_SAME 時,才需要它。

    user_id參數是10位元組的EBCDIC字元字串,而且區分大小寫。 它必須符合針對合作夥伴 TP 設定的其中一個使用者識別碼。

    參數可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和 period (.)

    如果 user_id 少於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右邊。

    如果要使用 APPC 自動登入功能, user_id 字元字串必須硬式編碼為 MS$SAME。 如需詳細資訊,請參閱<備註>一節。

    pip_dlen
    提供的參數。 指定要傳遞至合作夥伴 TP 的程式初始化參數 (PIP) 長度。 範圍是從 0 到 32767。

    pip_dptr
    提供的參數。 指定包含 PIP 資料的緩衝區位址。 只有在 pip_dlen 大於零時,才使用此參數。

    PIP 資料可以包含合作夥伴 TP 或遠端作業系統所需的初始化參數或環境設定資訊。 PIP 數據必須遵循一般數據流 (GDS) 格式。 如需詳細資訊,請參閱 IBM SNA 手動 (s) 。

    針對 Microsoft Windows,數據緩衝區可以位於靜態數據區域或全域配置的區域中。 數據緩衝區必須完全符合這個區域。

    reserv7
    保留欄位。

    fqplu_name
    提供的參數。 指定夥伴 LU 的完整名稱。 這必須符合遠端節點中定義之本機 LU 的完整名稱。 參數包含兩種類型的 EBCDIC 字元字串,用於 NETID 和夥伴 LU 的 LU 名稱。 這些名稱會以 EBCDIC 句號分隔 (.) 。

    如果未指定 任何plu_alias ,則必須提供此名稱。 它可以包含下列 EBCDIC 字元:

  • 18Uppercase 字母

  • 數位 0 到 9

  • 特殊字元 $、#和@

    如果此參數的值少於 17 個字節,請在右側加上 EBCDIC 空格 (0x40) 。

    reserv8
    保留欄位。

    proxy_user
    提供的參數。 指定指向 Unicode 字串的 LPWSTR,其中包含要使用特殊許可權 Proxy 功能仿真的用戶名稱。 只有在 opext 字段上設定AP_EXTD_VCB位時,才能使用此字段,表示延伸的 VCB。

    proxy_domain
    提供的參數。 指定指向 Unicode 字串的 LPWSTR,其中包含要使用特殊許可權 Proxy 功能模擬之使用者的功能變數名稱。 只有在 opext 字段上設定AP_EXTD_VCB位時,才能使用此字段,表示延伸的 VCB。

    reserv9
    保留欄位。

安全性參數的可能值

根據為設定期間所叫用 TP 所建立的對話安全性,使用下列其中一個值:

  • AP_NONE未使用交談安全性的叫用 TP。

  • AP_PGM使用交談安全性的叫用 TP,因此需要使用者標識碼和密碼。 透過 user_idpwd 參數提供此資訊。

  • AP_PROXY_PGM使用交談安全性的特殊許可權 Proxy 叫用的 TP,因此需要使用者標識碼和密碼。 必須針對 proxy_userproxy_domain 設定指標,以指向包含要模擬之用戶的用戶名稱和功能變數名稱的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。

  • AP_PROXY_SAME使用特殊許可權 Proxy 叫用的 TP,以及 Proxy 所提供的有效使用者識別碼和密碼,進而叫用另一個 TP。 必須針對 proxy_userproxy_domain 設定指標,以指向包含要模擬之用戶的用戶名稱和功能變數名稱的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。

    例如,假設 TP A 會使用特殊許可權 Proxy 所提供的有效使用者識別碼和密碼叫用 TP B,而 TP B 接著會叫用 TP C。如果 TP B 指定值AP_PROXY_SAME,APPC 會將 TP A 的使用者識別碼和已驗證的指標傳送 TP C 的 LU。 如果 TP C 設定為接受已驗證的指標) ,此指標會告訴 TP C 不需要密碼 (。

  • AP_PROXY_STRONG使用交談安全性的特殊許可權 Proxy 叫用的 TP,因此需要特殊許可權 Proxy 機制提供的使用者標識碼和密碼。 必須針對 proxy_userproxy_domain 設定指標,以指向包含要模擬之用戶的用戶名稱和功能變數名稱的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。 AP_PROXY_STRONG與AP_PROXY_PGM不同,因為AP_PROXY_STRONG不允許純文本密碼。 如果遠端系統不支援加密的密碼 (強式交談安全性) ,則此呼叫會失敗。

  • AP_SAME已使用有效使用者標識碼和密碼叫用的 TP,進而叫用另一個 TP。

    例如,假設 TP A 會叫用具有有效使用者識別碼和密碼的 TP B,而 TP B 接著會叫用 TP C。如果 TP B 指定值AP_SAME,APPC 會將 TP A 的使用者識別碼和已驗證的指標傳送給 TP C 的 LU。 如果 TP C 設定為接受已驗證的指標) ,此指標會告知 TP C 不需要密碼 (。

    當AP_SAME用於 MC_ALLOCATE 動詞命令時,您的應用程式一律必須在動詞控件區塊中提供 user_idpwd 參數的值。 根據主機整合伺服器與對等 LU 之間交涉的屬性, MC_ALLOCATE 動詞命令會以下列優先順序傳送三種 Attach (FMH-5) 訊息的其中一種:

    1. 如果 RU 已交涉「已驗證」安全性,則主機整合伺服器所傳送的附加將不會包含 VCB 中指定的 pwd 參數位段內容。

    2. 如果 RU 已交涉「持續驗證」安全性,則主機整合伺服器所傳送的附加會包含 VCB 中指定的 pwd 參數,但只有在 Attach 是 LU-LU 會話開始時第一個 user_id參數時 ,才會省略應用程式所發出之所有後續的 Attachs (pwd 參數,或是使用此 LU-LU 模式三重) 的任何其他應用程式。

    3. 如果 OU 尚未交涉上述任一項,則主機整合伺服器所傳送的 Attach 將會省略所有 Attach 上的 user_idpwd 參數。

      您的應用程式無法分辨 LU 之間已交涉的安全性模式,也無法判斷發出 MC_ALLOCATE 動詞是否為該 LU-LU 模式三元組的第一個動詞。 因此,當安全性設定為 AP_SAME 時,您的應用程式必須一律在 VCB 中設定user_idpwd 參數位段。

      For more information on persistent verification and already verified security, see the SNA Formats Guide, section "FM Header 5: Attach (LU 6.2)".

  • AP_STRONG使用交談安全性的叫用 TP,因此需要使用者標識碼和密碼。 透過 user_idpwd 參數提供此資訊。 AP_STRONG與AP_PGM不同,因為AP_STRONG不允許純文本密碼。 如果遠端系統不支援加密的密碼 (強式交談安全性) ,則此呼叫會失敗。

    如果要使用APPC自動登入功能, 安全性 必須設定為AP_PGM。 如需詳細資訊,請參閱<備註>一節。

傳回碼

AP_OK
主要傳回碼;已成功執行動詞。

AP_UNSUCCESSFUL
主要傳回碼;提供的參數 rtn_ctl 指定的立即 (AP_IMMEDIATE) 控制權傳回給 TP,而本機 LU 沒有可用的競爭勝出會話。

AP_PARAMETER_CHECK
主要傳回碼;動詞未執行,因為發生參數錯誤。

AP_BAD_RETURN_CONTROL

次要傳回碼;為 rtn_ctl 指定的值無效。

AP_BAD_SECURITY

次要傳回碼;為 安全性 指定的值無效。

AP_BAD_SYNC_LEVEL

次要傳回碼;為 sync_level 指定的值無效。

AP_BAD_TP_ID

次要傳回碼;為 tp_id 指定的值無效。

AP_PIP_LEN_INCORRECT

次要傳回碼; pip_dlen 的值大於 32767。

AP_UNKNOWN_PARTNER_MODE

次要傳回碼;為 mode_name 指定的值無效。

AP_BAD_PARTNER_LU_ALIAS

次要傳回碼;APPC 無法辨識提供的 partner_lu_alias

AP_NO_USE_OF_SNASVCMG

次要傳回碼;SNASVCMG 不是 mode_name的有效值。

AP_INVALID_DATA_SEGMENT

次要傳回碼;PIP 資料超過配置的數據區段,或 PIP 數據緩衝區的地址錯誤。

AP_ALLOCATION_ERROR
主要傳回碼;APPC 無法配置交談。 交談狀態設定為 RESET。

此程式代碼可以透過 MC_ALLOCATE之後發出的動詞來傳回。

AP_ALLOCATION_FAILURE_NO_RETRY

次要傳回碼;因為有永久條件,例如設定錯誤或會話通訊協定錯誤,所以無法配置交談。 若要判斷錯誤,系統管理員應該檢查錯誤記錄檔。 在更正錯誤之前,請勿重試配置。

AP_ALLOCATION_FAILURE_RETRY

次要傳回碼;因為暫時性狀況,例如鏈接失敗,所以無法配置交談。 失敗的原因會記錄在系統錯誤記錄檔中。 重試配置。

AP_COMM_SUBSYSTEM_ABENDED
主要傳回碼;表示下列其中一個條件:

  • 此交談所使用的節點遇到 ABEND。

  • TP 與 PU 2.1 節點之間的連線已中斷, (LAN 錯誤) 。

  • TP 電腦上的 SnaBase 遇到 ABEND。

    系統管理員應該檢查錯誤記錄檔,以判斷 ABEND 的原因。

    AP_COMM_SUBSYSTEM_NOT_LOADED
    主要傳回碼;處理動詞時,無法載入或終止必要的元件。 因此,無法進行通訊。 請連絡系統管理員以取得更正動作。

    當此傳回碼與 MC_ALLOCATE搭配使用時,它可以指出找不到任何通訊系統來支援本機 LU。 (例如,以 TP_STARTED 指定的本機 LU 別名不正確或尚未設定。) 請注意,如果 lu_aliasmode_name 少於八個字元,您必須確定這些字段會填入右邊的空格。 如果這些參數未填入空格,就會傳回此錯誤,因為沒有任何節點可以滿足 MC_ALLOCATE 要求。

    MC_ALLOCATE 針對以多個節點設定的主機整合伺服器系統產生此傳回碼時,有兩個次要傳回碼,如下所示:

    0xF0000001

    次要傳回碼;尚未啟動任何節點。

    0xF0000002

    次要傳回碼;至少有一個節點已啟動,但在未在任何作用中節點上設定 TP_STARTED發出) 時,本機 LU (。 問題可能是下列其中一項:

  • 未啟動具有本機 LU 的節點。

  • 未設定本機 LU。

    AP_INVALID_VERB_SEGMENT
    主要傳回碼;超出數據區段結尾的 VCB。

    AP_STACK_TOO_SMALL
    主要傳回碼;應用程式的堆疊大小太小,無法執行動詞。 增加應用程式的堆疊大小。

    AP_CONV_BUSY
    主要傳回碼;在任何交談上一次只能有一個未完成的交談動詞。 如果本機 TP 有多個線程,而且有多個線程使用相同的 conv_id發出 APPC 呼叫,就會發生這種情況。

    AP_THREAD_BLOCKING
    主要傳回碼;呼叫線程已經在封鎖呼叫中。

    AP_UNEXPECTED_DOS_ERROR
    主要傳回碼;操作系統在處理來自本機 TP 的 APPC 呼叫時,已將錯誤傳回給 APPC。 操作系統傳回碼會透過 secondary_rc傳回。 它會以 Intel 位元組交換的順序顯示。 如果問題持續發生,請洽詢系統管理員。

備註

MC_ALLOCATE 建立對應的交談。

當 TP 發出此動詞命令時,交談狀態為 RESET。 成功執行 (primary_rc AP_OK) 之后,狀態會變更為 SEND。 如果動詞未執行,狀態會保持不變。

MC_ALLOCATE的數個參數是 EBCDIC 或 ASCII 字串。 TP 可以使用 CSV CONVERT 將字串從一個字元集轉譯為另一個字元。

若要立即傳送MC_ALLOCATE要求,叫用 TP 可以在MC_ALLOCATE之後立即發出MC_FLUSHMC_CONFIRM。 否則, MC_ALLOCATE 要求會隨著本機 LU 傳送緩衝區中的其他數據累積,直到緩衝區已滿為止。

藉由在MC_ALLOCATE之後發出MC_CONFIRM,叫用 TP 可以立即判斷配置是否成功, (synclevel 是否設定為 AP_CONFIRM_SYNC_LEVEL) 。

一般而言, MC_ALLOCATE 動詞 動詞mode_name 參數的值必須符合針對所叫用 TP 節點所設定的模式名稱,並在設定期間與夥伴 LU 相關聯。

如果所叫用 TP 節點上的其中一個與夥伴 LU 相關聯的模式是隱含模式,當沒有與夥伴 LU 相關聯的模式名稱符合 mode_name的值時,兩個 LU 之間建立的會話將會是隱含模式。

主機整合伺服器支援稱為密碼替代的功能。 這是最新版 IBM i 操作系統 (V3R1) 所支援的安全性功能,可加密附加訊息上兩個節點之間流動的任何密碼。 每當有人叫用指定使用者標識碼和密碼的 APPC 交易程式時,就會在 Attach 上流動密碼。 例如,每當任何人登入IBM i時,就會發生這種情況。

將 BIND 要求的位 5 位 5 位元組 23 設定為 1 (,表示支援密碼替代) 。 如果遠端系統在 BIND 回應中設定此位,Host Integration Server 會自動加密 FMH-5 Attach 訊息中包含的 LU 6.2 交談安全性密碼。 主機整合伺服器APPC應用程式會自動利用此功能,方法是將VCB 的安全性 欄位設定為在 MC_ALLOCATE 要求中AP_PGM或AP_STRONG。

如果 APPC 應用程式想要強制加密密碼流動,應用程式可以在MC_ALLOCATE要求中為 VCB 中的 安全性 欄位指定 AP_STRONG 。 此選項會實作為 IBM i V3R1 中所定義,並記載於 IBM i CPI-C 程式設計人員參考中作為CM_SECURITY_PROGRAM_STRONG,其中 LU 6.2 pwd (密碼) 字段會在流過實體網路之前加密。

目前只有IBM i V3R1 或更新版本才支持密碼替代功能。 如果遠端系統不支援此功能,主機整合伺服器會使用10060006的感知程式代碼解除系結會話。 這兩個節點會交涉它們是否支援BIND交換中的這項功能。 主機整合伺服器會在 BIND 中設定一個位,也會在 BIND 上新增一些隨機數據以進行加密。 如果遠端節點支持密碼替代,它會在BIND回應中設定相同的位,並新增一些 (不同的) 隨機數據以進行解密。

主機整合伺服器支援自動登入APPC應用程式。 這項功能需要網路管理員的特定設定:APPC 應用程式必須從主機整合伺服器的用戶端在 LAN 端叫用。 客戶端必須登入 Windows 網域,但可以是任何支援主機整合伺服器 APPC API 的平臺。

用戶端應用程式會編碼為使用「程式」層級安全性,並具有特殊的硬式編碼 APPC 用戶名稱 MS$SAME 和密碼 MS$SAME。 當此工作階段配置從用戶端流向主機整合伺服器時,主機整合伺服器會查閱對應至用戶端登入所在Windows 帳戶的主機帳戶和密碼,並將主機帳戶資訊取代為它傳送至主機的 APPC 附加訊息。

注意

遠程節點不合法地設定指定密碼替代的位,而不是新增隨機數據。

根據IBM,LU 6.2密碼替代實作不支持密碼替代,但會回顯密碼替代位回主機整合伺服器,而不需要指定任何隨機數據。 當他們這樣做時,主機整合伺服器會解除系結具有感知碼 10060006 的會話。此感知程式代碼會解譯為:

  • 1006 = 遺漏必要字段或參數。

  • 0006 = 省略控件向量的必要子字段。

    主機整合伺服器也應該記錄事件 17 (APPC 會話啟用失敗:傳送的 BIND 負回應) 。

    正確的解決方案是無法修正實作。 不過,作為短期因應措施,可以設定下列主機整合伺服器 SNA 服務登錄設定: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB:REG_SZ:是

    在登錄中指定此參數時,將會停用主機整合伺服器密碼替代支援。

    主機整合伺服器已進行數項更新,可讓特殊許可權的APPC應用程式代表任何定義的Windows使用者,使用單一 Sign-On 功能開啟APPC交談。 這稱為具特殊許可權的 Proxy 功能。 已將擴充功能新增至APPC MC_ALLOCATE 動詞命令,以叫用這項功能。

    APPC 應用程式會在屬於特殊 Windows 群組成員的 Windows 使用者帳戶中啟動,以成為特殊許可權。 設定主機安全性網域時,SNA 管理員會定義第二個 Windows 群組,以便與主機整合伺服器的主機安全性功能搭配使用。 如果實際用戶端執行所在的使用者帳戶是這個第二個 Windows 群組的成員,則用戶端有權代表主機帳戶快取中定義的任何用戶帳戶起始 APPC 交談。

    以下說明特殊許可權 Proxy 功能的運作方式:

    主機整合伺服器系統管理員會建立名為APP的主機安全性網域。 SNA 管理員現在會建立兩個 Windows 群組。 第一個群組稱為APP,第二個群組稱為APP_PROXY此範例。 指派給APP群組的用戶已啟用單一登錄。 指派給APP_PROXY群組的使用者是具特殊許可權的 Proxy。 系統管理員使用 SNA 管理員中 [主機安全性網域] 屬性對話方塊上的 [使用者] 按鈕,將 Windows 使用者 AppcUser 新增至APP_PROXY群組。

    系統管理員接著會在主機整合伺服器伺服器上設定APPC應用程式,以作為名為APPCAPP的Windows服務執行,且該服務已設定為在AppcUser用戶帳戶下運作。 當 APPCAPP 執行時,它會使用擴充的 VCB 格式透過 ALLOCATE 動詞命令開啟 APPC 會話,並指定所需使用者的 Windows 使用者名稱 UserA (,例如) 。

    SNA 服務會看到來自主機安全性網域應用程式成員連線的會話要求。 用戶端/伺服器介面會告訴 SNA 服務實際用戶端是 AppcUser。

    SNA 服務會檢查 AppcUser 是否為APP_PROXY群組的成員。 因為 AppcUser 是 APP_PROXY 的成員,所以 SNA 服務會在 APPC Attach (FMH-5) 命令中插入 UserA 的使用者名稱/密碼,並將它傳送給合作夥伴 TP。

    為了支援特殊許可權 Proxy 功能,APPC 應用程式必須實作下列程式邏輯:

    APPC 應用程式必須判斷它想要仿真的 Windows 使用者識別碼和功能變數名稱。

    APPC 應用程式必須先設定下列參數,才能呼叫 MC_ALLOCATE 動詞命令:

    opext欄位中設定 AP_EXTD_VCB 旗標,以啟用擴充MC_ALLOCATE動詞控件區塊結構的使用。

    將安全性設定為AP_PROXY_SAME、AP_PROXY_PGM或AP_PROXY_STRONG。

    設定 proxy_userproxy_domain 指標,以指向包含要模擬之使用者的使用者名稱和功能變數名稱的 Unicode 字串。

注意

應用程式不需要在 MC_ALLOCATE VCB 中設定user_idpwd 字段。

當 APPC 應用程式執行上述步驟併發出 MC_ALLOCATE 動詞命令時,主機整合伺服器會在指定 Windows 使用者的主機安全性網域中執行查閱,並在 FMH-5 附加訊息中設定傳送至遠端系統的使用者識別符和密碼欄位。