Consideraciones de CPI-C para Windows

En este tema se resume la información que debe tener en cuenta al desarrollar programas basados Windows sistemas operativos.

Notificación de finalización asincrónica mediante la publicación de mensajes
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 conversation_return_code de la operación que se está completando. Sus valores dependen de la operación que se emitió originalmente. El argumento IParam contiene el CM_PTR al conversation_ID especificado en la llamada de función original.

Notificación de finalización asincrónica mediante eventos Win32®
Cuando se emite un verbo en una conversación sin bloqueo, devuelve CM_OPERATION_INCOMPLETE si se va a completar de forma asincrónica. Si se ha registrado un evento con la conversación, la aplicación puede llamar a WaitForSingleObject o WaitForMultipleObjects para recibir una notificación de la finalización del verbo. WinCPICExtractEvent permite que una aplicación de interfaz de programación común para comunicaciones (CPI-C) determine este identificador de eventos. Una vez completado el verbo, la aplicación debe llamar a Wait_For_Conversation para determinar el código de retorno del verbo asincrónico. Se Cancel_Conversation la función para cancelar una operación y la propia conversación.

Es responsabilidad de la aplicación restablecer el evento, como lo es con otras API.

Si no se ha registrado ningún evento, el verbo asincrónico se completa como lo hace en la actualidad, que es mediante la publicación de un mensaje en la ventana que la aplicación ha registrado con la biblioteca CPI-C.

Ordenación de bytes
De forma predeterminada, se usa la ordenación de bytes Intel. En el caso de los entornos en línea, NON_INTEL_BYTE_ORDER realiza todo el volteo necesario para las constantes. Los parámetros de entrada no contantes en bloques de control de verbo (VCB), por ejemplo, longitudes y punteros, siempre están en el formato nativo.

Eventos
Para recibir datos de forma asincrónica, se pasa un identificador de evento en el campo semáforo de VCB. Este evento debe estar en estado sin signo cuando se pasa a CPI-C y el identificador debe tener EVENT_MODIFY_STATE acceso al evento.

Nombre de la biblioteca
El nombre del archivo DLL win32® es WINCPIC32.DLL.

Varios subprocesos
Un programa de transacción (TP) puede tener varios subprocesos que emiten verbos. Windows CPI-C realiza aprovisionamientos para procesos multiproceso Windows basados en aplicaciones. Un proceso contiene uno o varios subprocesos de ejecución. Todas las referencias a subprocesos hacen referencia a subprocesos reales en un entorno de Windows multiproceso.

Embalaje
Por motivos de rendimiento, las VCB no están empaquetadas. Como resultado, los DWORD se encuentran en los límites DWORD, los WORD en los WORD y los BYT En BYTEs. Se debe tener acceso a las VCB mediante las estructuras proporcionadas.

Vinculación en tiempo de ejecución
Para que un TP se vincule dinámicamente a CPI-C en tiempo de ejecución, el TP debe emitir:

  • LoadLibrary para cargar dinámicamente WINCPIC.DLL o WINCPIC32.DLL, las bibliotecas para WINCPIC.

  • GetProcAddress para especificar WINCPIC como el punto de entrada deseado a la biblioteca de vínculos dinámicos (DLL).

  • FreeLibrary cuando la biblioteca CPI-C ya no es necesaria.

    Conversaciones simultáneas
    Un programa puede participar simultáneamente en hasta 64 conversaciones por proceso.

    Terminación de aplicaciones
    En Windows sistemas operativos, CPI-C no puede saber cuándo finaliza una aplicación. Por lo tanto, si una aplicación debe cerrarse (por ejemplo, recibe un mensaje WM_CLOSE como resultado de alt+F4 de un usuario), la aplicación debe llamar a WinCPICCleanup.

    Cediendo a otros componentes
    Al procesar CPI-C y Common Service Verbs (CSV), puede ser necesario que el código de biblioteca se ceda para permitir que otro componente, como SnaBase, reciba mensajes y los pase a la aplicación. Esto se puede lograr mediante las extensiones de Windows WinCPICSetBlockingHook y WinCPICUnhookBlockingHook.

    WinCPICSetBlockingHook permite que Windows implementación de CPI-C bloquee las llamadas de función CPI-C mediante una nueva función. Para llamar a WinCPICSetBlockingHook:

FARPROC WINAPI WinCPICSetBlockingHook (FARPROC 1pBlockFunc)  

WinCPICUnhookBlockingHook quita cualquier enlace de bloqueo anterior que se haya instalado y vuelve a instalar el mecanismo de bloqueo predeterminado. Para llamar a WinCPICUnhookBlockingHook:

BOOL WINAPI WinCPICUnhookBlockingHook (void)