Consideraciones de CPI-C en Windows
Las siguientes llamadas de interfaz de programación común para comunicaciones (CPI-C) y extensiones de Windows son de especial importancia. Debe revisarlos antes de usar Host Integration Server.
Nota
Los nombres de las llamadas son seudónimos. Los nombres de función C reales aparecen entre paréntesis después del seudónimo. Por ejemplo, Set_Processing_Mode es el seudónimo de una llamada. El nombre de la función real es cmspm.
Set_Processing_Mode( cmspm)
Especifica para la conversación si las llamadas posteriores se devuelven cuando la operación que solicitan se completa (bloquea) o inmediatamente después de que se inicia la operación (sin bloqueo). Se notifica a un programa la finalización de llamadas sin bloqueo cuando emite Wait_For_Conversation o a través de un mensaje de Windows enviado a un WndProc identificado por hwndNotify en Specify_Windows_Handle. Cuando el modo de procesamiento se establece para una conversación, se aplica a todas las llamadas posteriores de la conversación hasta que se vuelva a establecer el modo.
Specify_Windows_Handle( xchwnd)
Establece el identificador de ventana al que se envía un mensaje al finalizar una operación en modo de no bloqueo.
Wait_For_Conversation( cmwait)
Espera a que se complete una operación que se inició cuando la característica de conversación del modo de procesamiento se estableció en CM_NON_BLOCKING y se devolvió CM_OPERATION_INCOMPLETE en el parámetro return_code . Use Wait_For_Conversation al ejecutar un subproceso en segundo plano o una aplicación de un solo subproceso para Microsoft Windows. Esto ocurre con mayor probabilidad al migrar código de versiones anteriores de Host Integration Server y SNA Server.
Importante
Una aplicación puede establecer el modo de procesamiento llamando a Set_Processing_Mode. Si el identificador de ventana se establece en NULL o esta llamada nunca se emite, la aplicación debe llamar a Wait_For_Conversation para recibir una notificación cuando se complete la operación pendiente.
Cuando se completa una operación asincrónica, la ventana de aplicaciones hwndNotify recibe el mensaje devuelto por RegisterWindowMessage con "WinAsyncCPIC" como cadena de entrada. El valor wParam contiene el código de retorno de conversación de la operación que se está completando. Sus valores dependen de la operación que se emitió originalmente. El argumento lParam contiene el CM_PTR al identificador de conversación especificado en la llamada de función original.
WinCPICCleanup
Finaliza y anula el registro de una aplicación de una implementación de CPI-C de Windows.
Importante
Una aplicación debe llamar a esta función cuando termine de anular el registro de la aplicación desde la implementación de CPI-C de Windows.
WinCPICExtractEvent
Proporciona un método para una aplicación para determinar el identificador de eventos que se usa para una conversación CPI-C.
WinCPICIsBlocking
Determina si una tarea se está ejecutando mientras espera a que finalice una llamada de bloqueo anterior. Esto se usó cuando Windows versión 3. x entró en un PeekMessageLoop mientras permite que Windows continúe. Aunque una llamada emitida en una función de bloqueo parece a una aplicación como si se bloquea, la biblioteca de vínculos dinámicos (DLL) de CPI-C de Windows tiene que renunciar al procesador para permitir que se ejecuten otras aplicaciones. Esto significa que es posible que la aplicación que emitió la llamada de bloqueo se vuelva a escribir, en función de los mensajes que reciba. En este caso, WinCPICIsBlocking se puede usar para determinar si la tarea de aplicación se ha vuelto a escribir mientras espera a que finalice una llamada de bloqueo pendiente.
Esta extensión está pensada para proporcionar ayuda a una aplicación escrita para usar la característica CM_BLOCKING de la función de windows Specify_Processing_Mode . WinCPICIsBlocking tiene el mismo propósito que InSendMessage en la API de Windows.
Aplicaciones anteriores destinadas originalmente a Windows versión 3. x y que admiten varias conversaciones deben especificar CM_NONBLOCKING en Specify_Processing_Mode para que puedan admitir varias operaciones pendientes simultáneamente. Las aplicaciones todavía están limitadas a una operación pendiente por conversación en todos los entornos.
Nota
Windows CPI-C prohíbe más de una llamada de bloqueo pendiente por subproceso.
WinCPICSetBlockingHook
Permite que una implementación de CPI-C de Windows bloquee las llamadas de función CPI-C mediante una nueva función. Las llamadas de bloqueo solo se aplican si no usa llamadas asincrónicas. Si una función necesita bloquearse, se llama repetidamente a la llamada de bloqueo hasta que se completa la solicitud original. Esto permite que Windows continúe ejecutándose mientras la aplicación original espera a que se devuelva la llamada. Tenga en cuenta que, mientras se encuentra dentro de la llamada de bloqueo, se puede volver a escribir la aplicación. WinCPICSetBlockingHook fue usado por Windows versión 3. x aplicaciones que pasaron a peekMessageLoop para realizar llamadas de bloqueo sin bloquear el resto del sistema.
Nota
De forma predeterminada, Windows Server no entra en peekMessageLoop. En su lugar, bloquean un evento a la espera de que se complete la llamada. La única vez que necesita usar WinCPICSetBlockingHook para Windows es cuando una aplicación de un solo subproceso para Windows comparte código fuente común. En este caso, debe realizar explícitamente esta llamada. Compare esta llamada con WinCPICIsBlocking y WinCPICUnhookBlockingHook.
WinCPICSetEvent
Asocia un identificador de eventos Win32 con una finalización de verbo.
WinCPICStartup
Permite a una aplicación especificar la versión de Windows CPI-C necesaria y recuperar los detalles de la implementación de CPI-C específica.
Importante
Una aplicación debe llamar a esta función para registrarse con una implementación de CPI-C de Windows antes de emitir más llamadas a CPI-C de Windows.
WinCPICUnhookBlockingHook
Quita cualquier enlace de bloqueo anterior que se haya instalado y vuelva a instalar el mecanismo de bloqueo predeterminado.