WinAsyncAPPC
La función WinAsyncAPPC proporciona un punto de entrada asincrónico para todos los verbos APPC. Use esta función en lugar de las versiones de bloqueo de los verbos si ejecuta la aplicación y quiere usar la publicación de mensajes mediante identificadores de Windows para la finalización asincrónica del verbo.
Sintaxis
HANDLE WINAPI WinAsyncAPPC(
HANDLE hWnd,
Long lpVcb
);
Parámetros
hWnd
Identificador de ventana que se usará para la publicación de mensajes para notificar a una aplicación cuando se complete un verbo APPC.
lpVcb
Puntero al bloque de control de verbo.
Valor devuelto
El valor devuelto especifica si la solicitud asincrónica se realizó correctamente. Si la función se realizó correctamente, el valor devuelto es un identificador de tarea asincrónico. Si la función no se realizó correctamente, se devuelve un cero.
Cuando esta función vuelve con un valor correcto, esto no indica que la llamada a APPC se devolverá correctamente. Solo indica que era posible que la biblioteca APPC intentara la llamada APPC de forma asincrónica mediante la publicación de mensajes para la notificación.
Comentarios
Para obtener un ejemplo de cómo usar este verbo en programas de transacciones (CSP), consulte el TP de ejemplo de envío y recepción (SENDRECV). C ubicado en la carpeta APPC) incluido en el SDK.
Los verbos de APPC que se usan en conversaciones básicas que pueden bloquear son los siguientes:
-
Los verbos appC usados en las conversaciones asignadas que pueden bloquear son los siguientes:
-
Cuando se usan las versiones sincrónicas o asincrónicas de un verbo, una aplicación solo puede tener una función pendiente en curso en una conversación a la vez. Un intento de iniciar una segunda función da como resultado el código de error AP_CONV_BUSY.
Las excepciones al párrafo anterior son:
-
Para permitir el uso completo de la compatibilidad asincrónica, se han modificado los verbos RECEIVE_AND_WAIT emitidos de forma asincrónica y MC_RECEIVE_AND_WAIT para que actúen como los verbos RECEIVE_AND_POST y MC_RECEIVE_AND_POST . En concreto, mientras que una versión asincrónica de uno de estos verbos está pendiente, se pueden emitir los siguientes verbos en la misma conversación:
DEALLOCATE (AP_ABEND_PROG, AP_ABEND_SVC o AP_ABEND_TIMER)
-
Esto permite a una aplicación, en particular, un emulador de 5250, usar un RECEIVE_AND_WAIT asincrónico o MC_RECEIVE_AND_WAIT recibir datos. Aunque el RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT o MC_RECEIVE_AND_WAIT está pendiente, todavía puede usar SEND_ERROR o MC_SEND_ERROR y REQUEST_TO_SEND o MC_REQUEST_TO_SEND. Se recomienda usar esta característica para obtener compatibilidad asincrónica completa.
Una vez completada la operación asincrónica, la ventana de la aplicación hWnd recibe el mensaje devuelto por RegisterWindowMessage con "WinAsyncAPPC" como cadena de entrada. El argumento wParam contiene el identificador de tarea asincrónico devuelto por la llamada de función original. El argumento lParam contiene el puntero VCB original y se puede desreferenciar para determinar el código de retorno final.
Como parte de la definición de APPC de Windows, WinAPPCCancelAsyncRequest permite que una aplicación cancele cualquier acción asincrónica de APPC; pero finaliza la conversación relacionada o el TP según corresponda. Las operaciones pendientes se devuelven con AP_CANCELED como código de retorno.
Si la función se devuelve correctamente, se publica un mensaje winAsyncAPPC en la aplicación cuando se completa la operación o se cancela la conversación.