GetAppcConfig
La función GetAppcConfig proporciona un punto de entrada asincrónico para recuperar los sistemas remotos a los que puede conectarse una LU local determinada.
Sintaxis
HANDLE WINAPI GetAppcConfig(
HANDLE hWnd,
LPSTR pLocalLu,
LPSTR pMode,
LPINT pNumRemLu,
INT iMaxRemLu,
PSTR pRemLu,
LPINT pAsyncRetCode
);
Parámetros
hWnd
Parámetro proporcionado. Contiene el identificador de la ventana que va a recibir un mensaje de finalización asincrónica cuando se ha completado la llamada. Si no es null, el mensaje de finalización se publicará en este identificador de ventana. En este caso, pAsyncRetCode (el último parámetro) debe ser NULL. La finalización asincrónica de mensajes es el enfoque recomendado para que las aplicaciones de Windows usen esta función.
pLocalLu
Parámetro proporcionado. Especifica la dirección de un búfer que contiene el nombre de LU local para el que se devuelve información. Este nombre de LU local debe especificarse de la siguiente manera:
No rellenado
Terminada en NULL
Cadena ASCII
Longitud máxima de ocho bytes (excepto el terminador)
Para solicitar que se use la LU local predeterminada del usuario, el búfer debe contener ocho espacios seguidos de un valor NULL.
pMode
Parámetro proporcionado. Especifica la dirección de un búfer que contiene el nombre del modo para el que se devuelve información. En Microsoft Host Integration Server, este parámetro no se usa, pero para compatibilidad con versiones anteriores de SNA Server, se debe especificar un nombre de modo como se indica a continuación:No rellenado
Terminada en NULL
Cadena ASCII
Longitud máxima de ocho bytes (excepto el terminador)
pNumRemLu
Parámetro proporcionado. Especifica la dirección de una variable de entero que cuando se completa la función contendrá el número de LU remotas que se habrían devuelto, si el búfer especificado por pRemLu fuera lo suficientemente grande como para acomodar todas las LU remotas.iMaxRemLu
Parámetro proporcionado. Especifica el número de nombres de LU remotos que puede mantener el búfer indicado por pRemLu.pRemLu
Parámetro proporcionado. Especifica la dirección del búfer que contendrá los nombres de LU remotos una vez completada la función. La información se devolverá como una matriz de cadenas. Cada nombre de LU remoto se almacenará en el búfer de la siguiente manera:No rellenado
Terminada en NULL
Cadena ASCII
Longitud máxima de ocho bytes (excepto el terminador)
Las cadenas comienzan cada nueve bytes en el búfer y, por tanto, (pRemLu + (i-1)*9) da el inicio de la cadena i. En caso de que el búfer sea demasiado pequeño para contener todos los nombres, solo se devolverán las cadenas iMaxRemLu .
pAsyncRetCode
Parámetro proporcionado. Especifica la dirección de una variable de entero utilizada para almacenar el código devuelto de esta función, si la dirección proporcionada no es NULL. Los códigos de retorno serán los mismos que los devueltos por un mensaje de finalización asincrónico. Mientras se completa la llamada, el valor de esta variable será APPC_CFG_PENDING. Cuando se completa esta llamada asincrónica, el valor de esta variable contendrá algún código devuelto distinto de APPC_CFG_PENDING.Esta variable se usa mediante sondeos para su finalización cuando no se usa la finalización asincrónica de mensajes en un identificador de ventana.
Tenga en cuenta que si se usa pAsyncRetCode , hWnd debe ser null.
Valor devuelto
El significado del valor devuelto inmediato depende de si se aceptó o no la solicitud asincrónica. Para probar la aceptación, evalúe la expresión:
(<Identificador> devuelto & APPC_CFG_SUCCESS)
Si la expresión es FALSE, se rechazó la solicitud. A continuación, el valor devuelto es uno de los códigos de retorno sincrónicos de la lista siguiente. Si la expresión es TRUE, se aceptó la solicitud y se aplicará uno de los siguientes casos.
Si hWnd no era null, aparecerá un mensaje de finalización con el siguiente formato:
Parámetro de mensaje Descripción hWnd Identificador de la ventana de destino. Este valor es el mismo que el valor pasado en hWnd en la llamada inicial. uMsg Coincide con el número devuelto por una llamada a RegisterWindowMessage, con WinAppcCfg usado como cadena de identificación. Esta cadena está disponible por el #define WIN_APPC_CFG_COMPLETION_MSG. wParam Coincide con el IDENTIFICADOR devuelto desde la llamada inicial. Se usa como correlator. lParam Contiene uno de los códigos de retorno asincrónicos de la lista siguiente. Si pAsyncRetCode no es NULL, la variable de entero especificada se establecerá en APPC_CFG_PENDING. Una vez completada esta función de forma asincrónica, su valor cambiará a uno de los códigos de retorno asincrónicos que se enumeran a continuación.
Códigos de retorno sincrónicos
APPC_CFG_ERROR_NO_APPC_INIT
La biblioteca appC de Windows debe inicializarse mediante una llamada a WinAPPCStartup antes de llamar a GetAppcConfig y esto no se ha realizado.
APPC_CFG_ERROR_INVALID_HWND
El identificador pasado en hWnd no era null, pero no era un identificador de ventana válido.
APPC_CFG_ERROR_BAD_POINTER
El parámetro hWnd era null, lo que indica que la finalización se señalizó estableciendo la variable de entero a la que apunta pAsyncRetCode, pero pAsyncRetCode no era un puntero válido.
APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE
Tanto hWnd como pAsyncCompletion no eran NULL, por lo que GetAppcConfig no pudo decidir cómo se debe indicar la finalización.
APPC_CFG_ERROR_TOO_MANY_REQUESTS
Demasiadas llamadas GetAppcConfig ya se están procesando (actualmente, esto indica que hay 16 solicitudes pendientes). Vuelva a intentar la llamada después de un retraso. Para Microsoft Windows versión 3. x sistema, debe producir durante este período.
APPC_CFG_ERROR_GENERAL_FAILURE
Se produjo un error inesperado, probablemente de naturaleza del sistema.
Códigos de retorno asincrónicos
APPC_CFG_SUCCESS_NO_DEFAULT_REMOTE
La información de configuración se ha recuperado y no se definió ninguna LU remota predeterminada o no fue accesible por la LU local especificada.
APPC_CFG_SUCCESS_DEFAULT_REMOTE
La información de configuración se ha recuperado y hay una LU remota predeterminada a la que puede acceder la LU local especificada.
APPC_CFG_ERROR_NO_DEFAULT_LOCAL_LU
Se intentó recuperar las LU remotas asociadas con la LU local predeterminada, pero no se configuró ninguna LU local predeterminada.
APPC_CFG_ERROR_BAD_LOCAL_LU
La LU local especificada no está configurada o no es válida para el verbo que realiza la llamada.
APPC_CFG_ERROR_GENERAL_FAILURE
Se produjo un error inesperado, probablemente de naturaleza del sistema.
Comentarios
Se debe llamar a WinAPPCStartup antes de usar GetAppcConfig.
Si un código de error representa éxito o error se puede determinar mediante la evaluación de (RetCode&APPC_CFG_SUCCESS ) para probar si se ha realizado correctamente o (RetCode& APPC_CFG_FAILURE) para probar si se produce un error.
En el fragmento de código siguiente se muestra cómo una aplicación de consola puede probar la finalización:
while (*pAsyncRetCode == APPC_CFG_PENDING)
{
sleep(250);
}