Partager via


Prise en charge asynchrone de Windows CPI-C

Un programme qui émet un appel et ne reprend pas le contrôle tant que l’appel n’est pas terminé ne peut pas effectuer d’autres opérations. Ce type d’opération, appelé blocage, n’est pas adapté à une application serveur conçue pour gérer plusieurs demandes provenant de nombreux clients. L’achèvement asynchrone de l’appel retourne immédiatement l’appel initial, afin que l’application puisse continuer avec d’autres processus.

La prise en charge de l’interface de programmation commune windows pour les communications (CPI-C) est liée aux communications asynchrones et inclut les appels et extensions suivants :

Set_Processing_Mode (CPI-C)

Specify_Windows_Handle (CPI-C)

Wait_For_Conversation (CPI-C)

WinCPICExtractEvent

WinCPICIsBlocking

WinCPICSetBlockingHook

WinCPICSetEvent

WinCPICUnhookBlockingHook

Deux méthodes sous Microsoft Windows sont disponibles pour la saisie semi-automatique asynchrone :

  • Publication de messages à l’aide de handles de fenêtre.

  • En attente des événements Win32.

    La méthode traditionnelle utilise les messages publiés dans un handle de fenêtre pour notifier une application de l’achèvement du verbe. Cette méthode a été utilisée dans les versions antérieures du produit pour prendre en charge Windows 3. x.

    La prise en charge asynchrone à l’aide de la publication de messages est ajoutée à l’appel Set_Processing_Mode (CPI-C) et permet à une application d’être avertie de la fin de l’appel sur un handle de fenêtre. En appelant RegisterWindowsMessage avec « WinAsyncCPIC » comme chaîne, une application passe un handle de fenêtre par lequel l’application est avertie de la fin de l’appel. L’application effectue ensuite l’appel CPI-C et, lorsqu’elle se termine, un message est publié dans le handle de fenêtre qui a été passé, notifiant l’application que l’appel est terminé.

    À l’exception d’un appel de réception asynchrone qui peut émettre certains autres appels en attente, une conversation ne peut avoir qu’une seule opération incomplète à tout moment. Pour plus d’informations sur l’utilisation d’un appel de réception asynchrone, consultez Utilisation de l’achèvement d’appel asynchrone. Dans le cas d’une opération incomplète, le programme peut émettre des Wait_For_Conversation pour tester son achèvement ou Cancel_Conversation de mettre fin à la conversation et à l’opération incomplète.

    Une deuxième méthode utilisant des événements Win32 pour la notification est prise en charge dans Host Integration Server.

    Si un événement a été inscrit auprès de la conversation à l’aide de WinCPICSetEvent, une application peut appeler la fonction Win32 WaitForSingleObject ou WaitForMultipleObjects pour attendre d’être informée de l’achèvement du verbe.

    Les seules fonctions d’extension Windows requises pour Windows CPI-C sont à des fins d’initialisation (WinCPICStartup) et d’arrêt (WinCPICCleanup). Selon votre application, d’autres extensions Windows pour la gestion de la saisie semi-automatique asynchrone des verbes peuvent être utiles, mais elles ne sont pas obligatoires. Pour obtenir un exemple d’utilisation des appels asynchrones Windows CPI-C et des extensions Windows, consultez Achèvement d’appel asynchrone. Pour obtenir une description complète de tous les appels et extensions Windows CPI-C, consultez Appels et extensions CPI-Cpour l’environnement Windows.