完成非同步呼叫
除了一個例外狀況,Microsoft® Host Integration Server 允許每個連線一個未處理的 Windows® SNA 非同步呼叫,以及每個執行緒一個封鎖動詞命令。 例外狀況是發出非同步 接收 呼叫時,當 Receive 未完成時,可以發出下列呼叫:
-
這可讓應用程式特別是 5250 模擬器使用非同步 接收 資料。 強烈建議使用此功能。
下列範例說明如何搭配 Host Integration Server 使用非同步呼叫完成:
void ProcessVerbCompletion (WPARAM wParam LPARAM lParam)
{
for ( i = 0; i<nPendingVerbs; i++ )
if (memcmp (pPending [i].ConvID, (Conversation_ID) lParam)== 0)
ProcessCommand (wParam, lParam);
}
LRESULT CALLBACK SampleWndProc ( . . .)
{
if (msg = = uAsyncCPIC ) {
ProcessVerbCompletion (wParam, lParam);
}
else switch (msg) {
case WM_USER:
Initialize_Conversation (lpConvId, "GORDM", &lError );
if (lError ! = CM_OK ) {
ErrorDisplay ( ) ;
break ;
}
Set_Processing_Mode (lpConvId, CM_NON_BLOCKING, &lError ) ;
if ( lError ! = CM_OK ) {
ErrorDisplay ( ) ;
break ;
}
Allocate (lpConvId, &lError ) ;
switch (lError ) {
case CM_OK:
break ;
case CM_OPERATION_INCOMPLETE:
memcopy (pPending [nPending ++].ConvId, lpConvId, sizeof (C) ;
break ;
default:
ErrorDisplay ( ) ;
}
break ;
}
WinMain ( . . . )
{
if ( ( WinCPICStartup ( . . . ) = = FALSE ) {
return FALSE;
}
uAsyncCPIC = RegisterWindowMessage ("WinAsyncCPIC"");
Specify_Windows_Handle (hwndSample) ;
while (GetMessage ( . . . ) ) {
. . . . .
}
WinCPICCleanup ( . . . )
}
如需 CPI-C 呼叫和 Windows 擴充功能的詳細資訊,請參閱適用于 Windows 環境的CPI-C 呼叫和擴充功能。 如需使用 CPI-C 的其他資訊,請參閱 IBM Systems Application Architecture Common Programming Interface Communications Reference, part number SC26-4399-04。