共用方式為


MC_ALLOCATE

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

下列結構描述 MC_ALLOCATE 動詞動詞所使用的動詞控制區塊 (VCB)。

語法

  
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 會配置爭用者或爭用者會話,並將控制權傳回給 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®主機整合伺服器會嘗試啟動一個會話。 這會導致啟動隨選連線。

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 程式時,就會存取預設 RU。

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

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

    參數是8位元組 EBCDIC 字元字串。 它可以由 A 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

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

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

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

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

    Reserv6
    保留欄位。

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

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

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

  • 大寫和小寫字母

  • 數位 0 到 9

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

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

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

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

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

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

  • 大寫和小寫字母

  • 數位 0 到 9

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

    如果 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 的完整名稱。 參數包含 NETID 的兩個類型 A EBCDIC 字元字串,以及夥伴 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 C 的使用者識別碼從 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 C 的使用者識別碼從 TP A 和已驗證的指標傳送給 TP C 的 LU。 此指標會告知 TP C 不需要密碼(如果 TP C 設定為接受已驗證的指標)。

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

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

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

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

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

      如需持續驗證和已驗證安全性的詳細資訊,請參閱 SNA 格式指南,一節。

  • 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

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

  • 未啟動具有本機 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的值不相符時,在兩個 LUN 之間建立的會話將會是隱含模式。

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

將 BIND 要求的位元組 23 中的位 5 設定為 1 來表示密碼替代的支援(這表示支援密碼替代)。 如果遠端系統在 BIND 回應中設定此位,主機整合伺服器會自動加密 FMH-5 附加訊息中包含的 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 (password) 字段會在透過實體網路流動之前加密。

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

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

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

備註

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

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

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

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

    主機整合伺服器也應該記錄事件 17(APPC 工作階段啟用失敗:已傳送 BIND 負回應)。

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

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

    主機整合伺服器已進行數項更新,可讓具特殊許可權的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 附加 (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 附加訊息中設定使用者標識符和密碼欄位。