Freigeben über


Asynchrone Unterstützung für Windows-CPI-C

Ein Programm, das einen Aufruf ausgibt und die Kontrolle erst wieder erhält, wenn der Aufruf abgeschlossen ist, kann keine anderen Vorgänge ausführen. Dieser Vorgangstyp, der als Blockieren bezeichnet wird, eignet sich nicht für eine Serveranwendung, die für die Verarbeitung mehrerer Anforderungen von vielen Clients konzipiert ist. Die asynchrone Aufrufvervollständigung gibt den anfänglichen Aufruf sofort zurück, sodass die Anwendung mit anderen Prozessen fortfahren kann.

Die Unterstützung von Windows Common Programming Interface for Communications (CPI-C) bezieht sich auf die asynchrone Kommunikation und umfasst die folgenden Aufrufe und Erweiterungen:

Set_Processing_Mode (CPI-C)

Specify_Windows_Handle (CPI-C)

Wait_For_Conversation (CPI-C)

WinCPICExtractEvent

WinCPICIsBlocking

WinCPICSetBlockingHook

WinCPICSetEvent

WinCPICUnhookBlockingHook

Unter Microsoft Windows stehen zwei Methoden für die asynchrone Verbvervollständigung zur Verfügung:

  • Nachrichtenveröffentlichung mithilfe von Fensterhandles.

  • Warten auf Win32-Ereignisse.

    Die herkömmliche Methode verwendet Nachrichten, die an ein Fensterhandle gesendet werden, um eine Anwendung über die Verbvervollständigung zu benachrichtigen. Diese Methode wurde in früheren Versionen des Produkts verwendet, um Windows 3 zu unterstützen. x.

    Die asynchrone Unterstützung mithilfe der Nachrichtenveröffentlichung wird an den CPI-C-Aufruf (Set_Processing_Mode) angefügt und ermöglicht es einer Anwendung, über den Abschluss des Aufrufs in einem Fensterhandle benachrichtigt zu werden. Beim Aufrufen von RegisterWindowsMessage mit "WinAsyncCPIC" als Zeichenfolge übergibt eine Anwendung ein Fensterhandle, mit dem die Anwendung über den Abschluss des Aufrufs benachrichtigt wird. Die Anwendung führt dann den CPI-C-Aufruf aus, und wenn sie abgeschlossen ist, wird eine Nachricht an das übergebene Fensterhandle gesendet, mit der die Anwendung benachrichtigt wird, dass der Aufruf abgeschlossen ist.

    Mit Ausnahme eines asynchronen Empfangsaufrufs , der bestimmte andere Aufrufe ausgeben kann, während ausstehend, kann eine Konversation jederzeit nur einen unvollständigen Vorgang haben. Weitere Informationen zur Verwendung eines asynchronen Empfangsaufrufs finden Sie unter Verwenden der asynchronen Aufrufvervollständigung. Im Falle eines unvollständigen Vorgangs kann das Programm Wait_For_Conversation ausgeben, um den Abschluss zu testen, oder Cancel_Conversation , um die Konversation und den unvollständigen Vorgang zu beenden.

    Eine zweite Methode, die Win32-Ereignisse für Benachrichtigungen verwendet, wird in Host Integration Server unterstützt.

    Wenn ein Ereignis mit WinCPICSetEvent bei der Konversation registriert wurde, kann eine Anwendung die Win32 WaitForSingleObject - oder WaitForMultipleObjects-Funktion aufrufen, um auf die Benachrichtigung über die Vervollständigung des Verbs zu warten.

    Die einzigen Windows-Erweiterungsfunktionen, die für Windows CPI-C erforderlich sind, sind für Initialisierungszwecke (WinCPICStartup) und Beendigungszwecke (WinCPICCleanup). Abhängig von Ihrer Anwendung können andere Windows-Erweiterungen für die Behandlung der asynchronen Verbvervollständigung nützlich sein, aber sie sind nicht erforderlich. Ein Beispiel für die Verwendung von asynchronen Aufrufen von Windows CPI-C und Windows-Erweiterungen finden Sie unter Asynchrone Aufrufvervollständigung. Eine vollständige Beschreibung aller Windows CPI-C-Aufrufe und -Erweiterungen finden Sie unter CPI-C-Aufrufe und -Erweiterungen für die Windows-Umgebung.