Windows CPI-C 考量
下列通訊 (CPI-C) 呼叫和 Windows 延伸模組的常見程式設計介面特別重要。 您應該先檢閱它們,再使用主機整合伺服器。
注意
呼叫的名稱是假名。 實際的 C 函式名稱會出現在假名之後的括弧中。 例如, Set_Processing_Mode 是呼叫的假名。 實際的函式名稱為 cmspm。
Set_Processing_Mode ( cmspm)
指定當後續呼叫要求完成時傳回 (封鎖) ,或是在作業起始 (非封鎖) 之後立即傳回交談。 當程式發出Wait_For_Conversation或透過Specify_Windows_Handle 中hwndNotify所識別的 WndProc 傳送給 WndProc 時,程式會收到非封鎖呼叫完成的通知。 設定交談的處理模式時,它會套用至交談上的所有後續呼叫,直到再次設定模式為止。
Specify_Windows_Handle ( xchwnd)
設定在非封鎖模式中作業完成時傳送訊息的視窗控制碼。
Wait_For_Conversation ( cmwait)
等候作業完成,此作業會在處理模式交談特性設定為CM_NON_BLOCKING時起始,並在 return_code 參數中傳回 CM_OPERATION_INCOMPLETE 。 執行適用于 Microsoft Windows 的背景執行緒或單一線程應用程式時 ,請使用Wait_For_Conversation 。 從舊版主機整合伺服器和 SNA 伺服器移植程式碼時,最有可能發生這種情況。
重要
應用程式可以藉由呼叫 Set_Processing_Mode來設定處理模式。 如果視窗控制碼設定為 Null,或從未發出此呼叫,應用程式必須呼叫 Wait_For_Conversation ,才能在未完成的作業完成時收到通知。
非同步作業完成時,應用程式視窗 hwndNotify 會以 「WinAsyncCPIC」 作為輸入字串接收 RegisterWindowMessage 所傳回的訊息。 wParam值包含正在完成之作業的交談傳回碼。 其值取決於最初發出的作業。 lParam引數包含原始函式呼叫中指定的交談識別碼CM_PTR。
WinCPICCleanup
從 Windows CPI-C 實作終止和取消註冊應用程式。
重要
完成以從 Windows CPI-C 實作取消註冊應用程式時,應用程式必須呼叫此函式。
WinCPICExtractEvent
提供應用程式的方法,以判斷用於 CPI-C 交談的事件控制碼。
WinCPICIsBlocking
判斷工作是否正在等候先前的封鎖呼叫完成時執行。 這是在 Windows 3 版時使用。x 在允許 Windows 繼續時進入 PeekMessageLoop 。 雖然封鎖函式上發出的呼叫似乎與應用程式封鎖一樣,但 Windows CPI-C 動態連結程式庫 (DLL) 必須放棄處理器,以允許其他應用程式執行。 這表示可能會根據接收的訊息,發出封鎖呼叫的應用程式重新輸入。 在此實例中, WinCPICIsBlocking 可用來判斷應用程式工作目前是否已在等候未完成的封鎖呼叫完成時重新輸入。
此延伸模組旨在協助寫入以使用 Windows Specify_Processing_Mode 函式CM_BLOCKING特性的應用程式。 WinCPICIsBlocking 與 Windows API 中的 InSendMessage 相同。
原本以 Windows 版本 3 為目標的繼承應用程式。x 和 支援多個交談的 必須指定 Specify_Processing_Mode 中的CM_NONBLOCKING,才能同時支援多個未完成的作業。 在所有環境中,應用程式仍然受限於每個交談的一個未完成作業。
注意
Windows CPI-C 禁止每個執行緒有多個未完成的封鎖呼叫。
WinCPICSetBlockingHook
允許 Windows CPI-C 實作透過新的函式來封鎖 CPI-C 函式呼叫。 只有在您不使用非同步呼叫時,才會套用封鎖呼叫。 如果函式需要封鎖,則會重複呼叫封鎖呼叫,直到原始要求完成為止。 這可讓 Windows 在原始應用程式等候呼叫傳回時繼續執行。 請注意,在封鎖呼叫內時,可以重新輸入應用程式。 Windows 第 3 版使用WinCPICSetBlockingHook。進入PeekMessageLoop的 x 應用程式進行封鎖呼叫,而不會封鎖系統的其餘部分。
注意
根據預設,Windows Server 不會進入 PeekMessageLoop。 相反地,他們會封鎖等候呼叫完成的事件。 唯一需要針對 Windows 使用 WinCPICSetBlockingHook 的時間是 Windows 的單一線程應用程式共用一般原始程式碼時。 在此情況下,您必須明確進行此呼叫。 將此呼叫與 WinCPICIsBlocking 和 WinCPICUnhookBlockingHook對比。
WinCPICSetEvent
建立 Win32 事件控制碼與動詞完成的關聯。
WinCPICStartup
允許應用程式指定所需的 Windows CPI-C 版本,以及擷取特定 CPI-C 實作的詳細資料。
重要
應用程式必須呼叫此函式,才能向 Windows CPI-C 實作註冊本身,再發出任何進一步的 Windows CPI-C 呼叫。
WinCPICUnhookBlockingHook
移除任何先前已安裝的封鎖攔截,並重新安裝預設封鎖機制。