Freigeben über


Überlegungen zu CPI-C für Windows

In diesem Thema werden Informationen zusammengefasst, die Sie beachten sollten, wenn Sie Programme auf Basis von Windows-Betriebssystemen entwickeln.

Asynchrone Vervollständigungsbenachrichtigung mithilfe von Nachrichtenposting
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 die conversation_return_code aus dem abgeschlossenen Vorgang. Die Werte hängen davon ab, welcher Vorgang ursprünglich ausgegeben wurde. Das IParam-Argument enthält die CM_PTR für die im ursprünglichen Funktionsaufruf angegebene conversation_ID .

Asynchrone Vervollständigungsbenachrichtigung mithilfe von Win32-Ereignissen®
Wenn ein Verb für eine Nichtblockierungsunterhaltung ausgegeben wird, gibt es CM_OPERATION_INCOMPLETE zurück, wenn es asynchron abgeschlossen wird. Wenn ein Ereignis bei der Unterhaltung registriert wurde, kann die Anwendung WaitForSingleObject oder WaitForMultipleObjects aufrufen, um über die Vervollständigung des Verbs benachrichtigt zu werden. WinCPICExtractEvent ermöglicht es einer CPI-C-Anwendung (Common Programming Interface for Communications), dieses Ereignishandle zu bestimmen. Nach Abschluss des Verbs muss die Anwendung Wait_For_Conversationaufrufen, um den Rückgabecode für das asynchrone Verb zu ermitteln. Die Cancel_Conversation-Funktionkann aufgerufen werden, um einen Vorgang und die Konversation selbst abzubrechen.

Es liegt in der Verantwortung der Anwendung, das Ereignis wie bei anderen APIs zurückzusetzen.

Wenn kein Ereignis registriert wurde, wird das asynchrone Verb wie derzeit abgeschlossen. Dies geschieht durch Das Veröffentlichen einer Meldung im Fenster, dass die Anwendung bei der CPI-C-Bibliothek registriert wurde.

Bytereihenfolge
Standardmäßig wird die Intel-Byte-Reihenfolge verwendet. Für Inlineumgebungen übernimmt die Definition NON_INTEL_BYTE_ORDER alle erforderlichen Kehrvorgänge für Konstanten. Nichtkonstante Eingabeparameter in Verb-Steuerelementblöcken (VCBs) – z. B. Längen und Zeiger – befinden sich immer im nativen Format.

Ereignisse
Um Daten asynchron zu empfangen, wird ein Ereignishandle im Feld Semaphor des VCB übergeben. Dieses Ereignis muss sich im nicht signalierten Zustand befinden, wenn es an CPI-C übergeben wird, und das Handle muss EVENT_MODIFY_STATE Zugriff auf das Ereignis haben.

Name der Bibliothek
Der Win32-DLL-Name® ist WINCPIC32.DLL.

Mehrere Threads
Ein Transaktionsprogramm (TP) kann über mehrere Threads verfügen, die Verben ausgeben. Windows CPI-C stellt Vorkehrungen für Multithread-basierte Windows-basierte Prozesse vor. Ein Prozess enthält mindestens einen Ausführungsthread. Alle Verweise auf Threads beziehen sich auf tatsächliche Threads in einer Multithread-Windows-Umgebung.

Verpackung
Aus Leistungsgründen sind die VCBs nicht gepackt. Daher befinden sich DWORDs auf DWORD-Grenzen, WORDs auf WORDs und BYTEs auf BYTEs. Auf VCBs sollte mithilfe der bereitgestellten Strukturen zugegriffen werden.

Laufzeitverknüpfung
Damit ein TP zur Laufzeit dynamisch mit CPI-C verknüpft werden kann, muss der TP Folgendes ausgeben:

  • LoadLibrary , um WINCPIC.DLL oder WINCPIC32.DLL, die Bibliotheken für WINCPIC, dynamisch zu laden.

  • GetProcAddress , um WINCPIC als gewünschten Einstiegspunkt in die Dll (Dynamic Link Library) anzugeben.

  • FreeLibrary , wenn die CPI-C-Bibliothek nicht mehr benötigt wird.

    Gleichzeitige Unterhaltungen
    Ein Programm kann gleichzeitig an bis zu 64 Unterhaltungen pro Prozess teilnehmen.

    Beenden von Anwendungen
    Unter Windows-Betriebssystemen kann CPI-C nicht feststellen, wann eine Anwendung beendet wird. Wenn eine Anwendung geschlossen werden muss (z. B. erhält sie eine WM_CLOSE Nachricht als Ergebnis einer ALT+F4-Nachricht von einem Benutzer), sollte die Anwendung WinCPICCleanup aufrufen.

    Nachgeben an andere Komponenten
    Bei der Verarbeitung von CPI-C und Common Service Verbs (CSV) kann es erforderlich sein, dass der Bibliothekscode ergibt, damit eine andere Komponente, z. B. SnaBase, Nachrichten empfangen und an die Anwendung übergeben kann. Dies kann mithilfe der Windows-Erweiterungen WinCPICSetBlockingHook und WinCPICUnhookBlockingHook erreicht werden.

    WinCPICSetBlockingHook ermöglicht es einer Windows CPI-C-Implementierung, CPI-C-Funktionsaufrufe mithilfe einer neuen Funktion zu blockieren. So rufen Sie WinCPICSetBlockingHook auf:

FARPROC WINAPI WinCPICSetBlockingHook (FARPROC 1pBlockFunc)  

WinCPICUnhookBlockingHook entfernt alle vorherigen blockierenden Hooks, die installiert wurden, und installiert den Standardblockiermechanismus neu. So rufen Sie WinCPICUnhookBlockingHook auf:

BOOL WINAPI WinCPICUnhookBlockingHook (void)