Überlegungen zu Windows-CPI-C
Von besonderer Bedeutung sind die folgenden CPI-C-Aufrufe (Common Programming Interface for Communications) und Windows-Erweiterungen. Sie sollten diese überprüfen, bevor Sie Host Integration Server verwenden.
Hinweis
Die Namen der Anrufe sind Pseudonyme. Die tatsächlichen C-Funktionsnamen werden in Klammern nach dem Pseudonym angezeigt. Beispielsweise ist Set_Processing_Mode das Pseudonym für einen Anruf. Der tatsächliche Funktionsname ist cmspm.
Set_Processing_Mode( cmspm)
Gibt für die Unterhaltung an, ob nachfolgende Aufrufe zurückgegeben werden, wenn der vorgang, den sie anfordern, abgeschlossen (blockieren) oder unmittelbar nach dem Initiieren des Vorgangs (Nonblocking) zurückgegeben werden. Ein Programm wird über den Abschluss von Nichtblockierungsaufrufen benachrichtigt, wenn es Wait_For_Conversation oder über eine Windows-Nachricht ausgibt, die an einen WndProc gesendet wird, der von hwndNotify in Specify_Windows_Handle identifiziert wurde. Wenn der Verarbeitungsmodus für eine Unterhaltung festgelegt ist, gilt er für alle nachfolgenden Aufrufe der Unterhaltung, bis der Modus erneut festgelegt wird.
Specify_Windows_Handle( xchwnd)
Legt das Fensterhandle fest, an das eine Nachricht nach Abschluss eines Vorgangs im Nichtblockierungsmodus gesendet wird.
Wait_For_Conversation( cmwait)
Wartet auf den Abschluss eines Vorgangs, der initiiert wurde, wenn das Unterhaltungsmerkmal des Verarbeitungsmodus auf CM_NON_BLOCKING festgelegt wurde und CM_OPERATION_INCOMPLETE im parameter return_code zurückgegeben wurde. Verwenden Sie Wait_For_Conversation , wenn Sie einen Hintergrundthread oder eine Einzelthreadanwendung für Microsoft Windows ausführen. Dies tritt wahrscheinlich beim Portieren von Code aus älteren Versionen von Host Integration Server und SNA Server auf.
Wichtig
Eine Anwendung kann den Verarbeitungsmodus festlegen, indem sie Set_Processing_Mode aufruft. Wenn das Fensterhandle auf NULL festgelegt ist oder dieser Aufruf nie ausgegeben wird, muss die Anwendung Wait_For_Conversation aufrufen, um benachrichtigt zu werden, wenn der ausstehende Vorgang abgeschlossen ist.
Wenn ein asynchroner Vorgang abgeschlossen ist, empfängt das Anwendungsfenster hwndNotify die von RegisterWindowMessage zurückgegebene Nachricht mit "WinAsyncCPIC" als Eingabezeichenfolge. Der wParam-Wert enthält den Konversationsrückgabecode aus dem abgeschlossenen Vorgang. Die Werte hängen davon ab, welcher Vorgang ursprünglich ausgegeben wurde. Das Argument lParam enthält die CM_PTR zum Unterhaltungsbezeichner, der im ursprünglichen Funktionsaufruf angegeben wurde.
WinCPICCleanup
Beendet und hebt die Registrierung einer Anwendung aus einer Windows CPI-C-Implementierung auf.
Wichtig
Diese Funktion muss von einer Anwendung aufgerufen werden, wenn die Registrierung der Anwendung aus der Windows CPI-C-Implementierung aufgehoben wird.
WinCPICExtractEvent
Stellt eine Methode für eine Anwendung bereit, um das Ereignishandle zu bestimmen, das für eine CPI-C-Unterhaltung verwendet wird.
WinCPICIsBlocking
Bestimmt, ob eine Aufgabe ausgeführt wird, während auf den Abschluss eines vorherigen blockierenden Aufrufs gewartet wird. Dies wurde bei Windows Version 3 verwendet. x ging in einen PeekMessageLoop , während Windows das Fortfahren erlaubte. Obwohl ein Aufruf einer blockierenden Funktion für eine Anwendung wie blockiert erscheint, muss die Windows CPI-C Dynamic-Link Library (DLL) den Prozessor aufgeben, damit andere Anwendungen ausgeführt werden können. Dies bedeutet, dass es möglich ist, dass die Anwendung, die den blockierenden Aufruf ausgegeben hat, je nach empfangenen Nachrichten erneut eingegeben wird. In diesem instance kann WinCPICIsBlocking verwendet werden, um zu bestimmen, ob der Anwendungstask derzeit erneut eingegeben wurde, während auf den Abschluss eines ausstehenden Blockierungsaufrufs gewartet wird.
Diese Erweiterung soll eine Anwendung unterstützen, die geschrieben wurde, um das CM_BLOCKING Merkmal der Windows-Specify_Processing_Mode-Funktion zu verwenden. WinCPICIsBlocking dient demselben Zweck wie InSendMessage in der Windows-API.
Ältere Anwendungen, die ursprünglich für Windows Version 3 vorgesehen waren. x und, die mehrere Unterhaltungen unterstützen, müssen CM_NONBLOCKING in Specify_Processing_Mode angeben, damit mehrere ausstehende Vorgänge gleichzeitig unterstützt werden können. Anwendungen sind immer noch auf einen ausstehenden Vorgang pro Konversation in allen Umgebungen beschränkt.
Hinweis
Windows CPI-C verbietet mehr als einen ausstehenden Blockierungsaufruf pro Thread.
WinCPICSetBlockingHook
Ermöglicht einer Windows CPI-C-Implementierung, CPI-C-Funktionsaufrufe mithilfe einer neuen Funktion zu blockieren. Blockierende Aufrufe gelten nur, wenn Sie keine asynchronen Aufrufe verwenden. Wenn eine Funktion blockiert werden muss, wird der blockierende Aufruf wiederholt aufgerufen, bis die ursprüngliche Anforderung abgeschlossen ist. Dadurch kann Windows weiterhin ausgeführt werden, während die ursprüngliche Anwendung wartet, bis der Aufruf zurückgegeben wird. Beachten Sie, dass die Anwendung während des blockierenden Aufrufs erneut eingegeben werden kann. WinCPICSetBlockingHook wurde von Windows Version 3 verwendet. x-Anwendungen , die in ein PeekMessageLoop gegangen sind, um blockierende Aufrufe auszuführen, ohne den Rest des Systems zu blockieren.
Hinweis
Windows Server wechselt standardmäßig nicht in peekMessageLoop. Stattdessen blockieren sie ein Ereignis, das auf den Abschluss des Anrufs wartet. WinCPICSetBlockingHook für Windows muss nur verwendet werden, wenn eine Singlethreadanwendung für Windows gemeinsamen Quellcode verwendet. In diesem Fall müssen Sie diesen Aufruf explizit tätigen. Vergleichen Sie diesen Aufruf mit WinCPICIsBlocking und WinCPICUnhookBlockingHook.
WinCPICSetEvent
Ordnet ein Win32-Ereignishandle einer Verbvervollständigung zu.
WinCPICStartup
Ermöglicht einer Anwendung, die erforderliche Version von Windows CPI-C anzugeben und Details der spezifischen CPI-C-Implementierung abzurufen.
Wichtig
Eine Anwendung muss diese Funktion aufrufen, um sich bei einer Windows CPI-C-Implementierung zu registrieren, bevor sie weitere Windows CPI-C-Aufrufe ausgibt.
WinCPICUnhookBlockingHook
Entfernt alle vorherigen blockierenden Hooks, die installiert wurden, und installiert den Standardblockiermechanismus neu.