Considérations sur CPI-C pour Windows

cette rubrique résume les informations que vous devez garder à l’esprit lorsque vous développez des programmes basés sur des systèmes d’exploitation Windows.

Notification d’achèvement asynchrone à l’aide de la publication de messages
Lorsqu’une opération asynchrone est terminée, la fenêtre applications hwndNotify reçoit le message retourné par RegisterWindowMessage avec « WinAsyncCPIC » comme chaîne d’entrée. La valeur wParam contient le conversation_return_code de l’opération qui se termine. Ses valeurs dépendent de l’opération qui a été initialement émise. L’argument IParam contient le CM_PTR à la conversation_ID spécifiée dans l’appel de fonction d’origine.

Notification d’achèvement asynchrone à l’aided' événements de® Win32
Lorsqu’un verbe est émis sur une conversation qui n’est pas bloquée, il retourne CM_OPERATION_INCOMPLETE s’il va se terminer de façon asynchrone. Si un événement a été enregistré avec la conversation, l’application peut appeler WaitForSingleObject ou WaitForMultipleObjects pour être informé de la fin du verbe. WinCPICExtractEvent permet à une interface de programmation commune for Communications (CPI-C) applicationto de déterminer ce descripteur d’événement. Une fois le verbe terminé, l’application doit appeler Wait_For_Conversationpour déterminer le code de retour pour le verbe asynchrone. La fonction Cancel_Conversationpeut être appelée pour annuler une opération et la conversation elle-même.

Il incombe à l’application de réinitialiser l’événement, comme c’est le cas avec d’autres API.

Si aucun événement n’a été enregistré, le verbe asynchrone se termine comme il le fait actuellement, ce qui consiste à publier un message dans la fenêtre que l’application a inscrite auprès de la bibliothèque CPI-C.

Classement des octets
Par défaut, l’ordonnancement d’un octet est utilisé. Pour les environnements Inline, la définition de NON_INTEL_BYTE_ORDER effectue tout le basculement requis pour les constantes. Les paramètres d’entrée non constants dans les blocs de contrôle de verbe (VCBs), par exemple, les longueurs et les pointeurs, sont toujours au format natif.

Événements
Pour recevoir des données de manière asynchrone, un descripteur d’événement est transmis dans le champ Semaphore du VCB. Cet événement doit être à l’état non signalé lorsqu’il est passé à CPI-C, et le handle doit avoir un accès EVENT_MODIFY_STATE à l’événement.

Nom de la bibliothèque
Le nom de la DLL de® Win32 est WINCPIC32.DLL.

Threads multiples
Un programme de transaction (TP) peut avoir plusieurs threads qui émettent des verbes. Windows CPI-C fournit des dispositions pour les processus basés sur des Windows multithread. Un processus contient un ou plusieurs threads d’exécution. toutes les références aux threads font référence à des threads réels dans un environnement multithread Windows.

Colis
Pour des raisons de performances, les VCBs ne sont pas compressés. Par conséquent, les DWORDs se trouvent sur les limites DWORD, les mots sur les mots et les octets sur octets. VCBs doit être accessible à l’aide des structures fournies.

Liaison au moment de l’exécution
Pour qu’un TP soit lié de manière dynamique à CPI-C au moment de l’exécution, le TP doit émettre :

  • LoadLibrary pour charger dynamiquement WINCPIC.DLL ou WINCPIC32.DLL, les bibliothèques pour WINCPIC.

  • GetProcAddress pour spécifier WINCPIC comme point d’entrée souhaité pour la bibliothèque de liens dynamiques (dll).

  • FreeLibrary lorsque la bibliothèque CPI-C n’est plus nécessaire.

    Conversations simultanées
    Un programme peut participer simultanément à jusqu’à 64 conversations par processus.

    Arrêt des applications
    dans Windows systèmes d’exploitation, CPI-C ne peut pas déterminer à quel moment une application se termine. Par conséquent, si une application doit se fermer (par exemple, elle reçoit un message de WM_CLOSE à la suite d’un ALT + F4 d’un utilisateur), l’application doit appeler WinCPICCleanup.

    Transmettre à d’autres composants
    Lors du traitement des éléments CPI-C et des verbes de service communs (CSV), il peut être nécessaire que le code de la bibliothèque produise pour permettre à un autre composant, tel que SnaBase, de recevoir des messages et de les transmettre à l’application. pour ce faire, vous pouvez utiliser les extensions de Windows WinCPICSetBlockingHook et WinCPICUnhookBlockingHook.

    WinCPICSetBlockingHook permet à une implémentation Windows cpi-c de bloquer les appels de fonction cpi-c au moyen d’une nouvelle fonction. Pour appeler WinCPICSetBlockingHook:

FARPROC WINAPI WinCPICSetBlockingHook (FARPROC 1pBlockFunc)  

WinCPICUnhookBlockingHook supprime tout crochet bloquant précédent qui a été installé et réinstalle le mécanisme de blocage par défaut. Pour appeler WinCPICUnhookBlockingHook:

BOOL WINAPI WinCPICUnhookBlockingHook (void)