Compatibilidad asincrónica con CPI-C en Windows
Un programa que emite una llamada y no recupera el control hasta que la llamada se completa no puede realizar ninguna otra operación. Este tipo de operación, denominado bloqueo, no es adecuado para una aplicación de servidor diseñada para controlar varias solicitudes de muchos clientes. La finalización asincrónica de llamadas devuelve la llamada inicial inmediatamente, por lo que la aplicación puede continuar con otros procesos.
La compatibilidad con la interfaz de programación común de Windows para comunicaciones (CPI-C) está relacionada con las comunicaciones asincrónicas e incluye las siguientes llamadas y extensiones:
Specify_Windows_Handle (CPI-C)
Hay dos métodos en Microsoft Windows disponibles para la finalización asincrónica del verbo:
Publicación de mensajes mediante identificadores de ventana.
Esperando eventos win32.
El método tradicional usa mensajes publicados en un identificador de ventana para notificar a una aplicación de finalización de verbos. Este método se usó en versiones anteriores del producto para admitir Windows 3. x.
La compatibilidad asincrónica mediante la publicación de mensajes se anexa a la llamada de Set_Processing_Mode (CPI-C) y permite que una aplicación reciba una notificación de finalización de llamadas en un identificador de ventana. Al llamar a RegisterWindowsMessage con "WinAsyncCPIC" como cadena, una aplicación pasa un identificador de ventana por el que se notifica a la aplicación la finalización de la llamada. A continuación, la aplicación realiza la llamada CPI-C y, cuando completa un mensaje, se publica en el identificador de ventana que se pasó, notificando a la aplicación que se ha completado la llamada.
Con la excepción de una llamada de recepción asincrónica que puede emitir ciertas otras llamadas mientras está pendiente, una conversación solo puede tener una operación incompleta en cualquier momento. Para obtener más información sobre el uso de una llamada de recepción asincrónica, consulte Uso de la finalización asincrónica de llamadas. En el caso de una operación incompleta, el programa puede emitir Wait_For_Conversation para probar su finalización o Cancel_Conversation para finalizar la conversación y la operación incompleta.
Se admite un segundo método con eventos Win32 para la notificación en Host Integration Server.
Si se ha registrado un evento con la conversación mediante WinCPICSetEvent, una aplicación puede llamar a la función WaitForSingleObject o WaitForMultipleObjects de Win32 para esperar a que se notifique la finalización del verbo.
Las únicas funciones de extensión de Windows necesarias para Windows CPI-C son para fines de inicialización (WinCPICStartup) y terminación (WinCPICCleanup). En función de la aplicación, otras extensiones de Windows para controlar la finalización asincrónica de verbos pueden ser útiles, pero no son necesarias. Para obtener un ejemplo de cómo usar llamadas asincrónicas y extensiones asincrónicas de Windows CPI-C de Windows, consulte Finalización asincrónica de llamadas. Para obtener una descripción completa de todas las extensiones y llamadas CPI-C de Windows, consulta Cpi-C Calls and Extensions for the Windows Environment.