APPC 動詞和 Windows 擴充功能
本主題描述 Host Integration Server 支援的 APPC 動詞和 Windows 擴充功能:
APPC 動詞
下列 APPC 動詞描述包含重要功能,在使用這個版本的 Windows APPC 之前,應該先閱讀。
ALLOCATE 或 MC_ALLOCATE
叫用交易程式 (TP) 所發出,此動詞會在本機邏輯單元 (LU) 和夥伴 LU 之間配置會話,以及 (搭配RECEIVE_ALLOCATE) 建立叫用 TP 與可叫用 TP 之間的交談。 成功執行此動詞之後,APPC 會產生對話識別碼 (conv_id) 。 conv_id是所有其他 APPC 交談動詞命令的必要參數。
對於使用 TP、5250 模擬器或 APPC 應用程式的使用者或群組,您可以指派預設的本機和遠端 RU。 在此情況下,LU 別名的欄位會保留空白或 Null,而且當使用者或群組成員啟動 APPC 程式時,會存取預設 LU。 如需使用預設 LU 的詳細資訊,請參閱 Microsoft Host Integration Server 說明的網路整合一節。
RECEIVE_ALLOCATE
由可叫用的 TP 發出,以確認它已準備好開始與發出 ALLOCATE 或MC_ALLOCATE的叫用 TP 交談。 這必須是可叫用 TP 所發出的第一個 APPC 動詞。 初始狀態為 RESET。 如果動詞執行成功 (primary_rc AP_OK) ,狀態會變更為 RECEIVE。
RECEIVE_AND_POST或MC_RECEIVE_AND_POST
以非同步方式接收應用程式資料和狀態資訊。 這可讓本機 TP 在資料仍在抵達本機 LU 時繼續處理。 只有 Windows 作業系統支援RECEIVE_AND_POST和MC_RECEIVE_AND_POST。
雖然非同步RECEIVE_AND_POST或MC_RECEIVE_AND_POST未完成,但可以發出下列動詞:
REQUEST_TO_SEND或MC_REQUEST_TO_SEND
GET_TYPE
GET_ATTRIBUTES或MC_GET_ATTRIBUTES
TEST_RTS或MC_TEST_RTS
DEALLOCATE
SEND_ERROR或MC_SEND_ERROR
TP_ENDED
RECEIVE_AND_WAIT或MC_RECEIVE_AND_WAIT
接收目前可從合作夥伴 TP 取得的任何資料。 如果目前沒有可用的資料,本機 TP 會等候資料送達。
RECEIVE_AND_WAIT和MC_RECEIVE_AND_WAIT已改變,以像RECEIVE_AND_POST和MC_RECEIVE_AND_POST一樣運作。 雖然非同步RECEIVE_AND_WAIT或MC_RECEIVE_AND_WAIT未完成,但可以發出下列動詞命令:
REQUEST_TO_SEND或MC_REQUEST_TO_SEND
GET_TYPE
GET_ATTRIBUTES或MC_GET_ATTRIBUTES
TEST_RTS或MC_TEST_RTS
DEALLOCATE
SEND_ERROR或MC_SEND_ERROR
TP_ENDED
TP_STARTED
叫用 TP 所發出,這個動詞會通知 APPC TP 正在啟動。 對於使用 TP、5250 模擬器或 APPC 應用程式的使用者或群組,您可以指派預設的本機和遠端 APPC LU。 當使用者或群組成員 (TP、5250 模擬器或 APPC 應用程式) 啟動 APPC 程式時,就會存取這些預設 RU,而且程式未指定 LU 別名。 如需使用預設 LU 的詳細資訊,請參閱網路整合說明。
限制
主機整合伺服器允許每個連線一個未處理的 Windows APPC 非同步呼叫,以及每個執行緒一個封鎖動詞命令。 例如:
void ProcessVerbCompletion (WPARAM wParam, LPARAM lParam)
{
int i;
for (i = 0; i < nPendingVerbs; i++)
if (pPendingVerbs[i].hAsync == wParam)
ProcessVCB( (LPVCB) lParam);
} . . .
LRESULT CALLBACK SampleWndProc ( ... )
{
if (msg == uAsyncAPPC) {
ProcessVerbCompletion(wParam; lParam);
}
else switch (msg) {
case WM_USER:
if (hAsync = WinAsyncAPPC(hwnd, &vcb))
pPendingVerbs [nPendingVerbs++].hAsync = hAsync;
break;
}
}
WinMain ( ... )
{
if ( ( WinAPPCStartup ( ...) = = FALSE ) {
return FALSE ;
}
uAsyncAPPC = RegisterWindowsMessage ("WinAsyncAPPC") ;
while (GetMessage ( ...) ) {
...
WinAPPCCleanup ( ... )
}
注意
一個未完成非同步呼叫規則的例外狀況是RECEIVE_AND_POST、MC_RECEIVE_AND_POST、RECEIVE_AND_WAIT和MC_RECEIVE_AND_WAIT。 雖然這些動詞是未完成的,但也可以呼叫某些其他動詞。