/*****************************************************************************/ /* */ /* Header: appccfg.h */ /* */ /* (C) COPYRIGHT Data Connection Ltd 1993 */ /* (C) COPYRIGHT Microsoft Corp. 1993 */ /* */ /* Header for appccfg.c */ /* */ /*****************************************************************************/ /* ---- 14/05/93 CD Initial coding */ /*****************************************************************************/ /*****************************************************************************/ /* */ /* HANDLE WINAPI GetAppcConfig( HANDLE hWnd, LPSTR pLocalLu, LPSTR pMode, */ /* LPINT pNumRemLu, INT iMaxRemLu, LPSTR pRemLu,*/ /* LPINT pAsyncRetCode) */ /* */ /* Parameters */ /* ---------- */ /* */ /* IN hWnd Handle of window to which completion is to be posted. */ /* If NULL no completion message will be posted but */ /* pAsyncRetCode must be valid. If hWnd is non-NULL it */ /* must be valid & pAsyncRetCode must be NULL. */ /* */ /* IN pLocalLU Pointer to max 8 byte ASCII local LU name (should be 8 */ /* ASCII blanks to request info on Remote LUs partnered */ /* to the default Local LU for this user. If none is */ /* configured then APPC_CFG_ERROR_NO_DEFAULT_LOCAL will */ /* be returned in the LPARAM). */ /* */ /* IN pMode Pointer to max 8 byte ASCII mode name (usually */ /* "QPCSUPP" for a 5250 emulator) */ /* */ /* IN/OUT pNumRemLu Pointer to int to receive the number of Remote LUs */ /* available. (If more than MaxRemLu then only the first */ /* MaxRemLu of them will have been copied) */ /* */ /* IN iMaxRemLu Int giving the max number of Remote LU names the */ /* buffer can hold. (size of buffer in bytes / 9) */ /* */ /* IN/OUT pRemLu Pointer to buffer to receive Remote LUs */ /* The data will be returned as an array of max 8 byte */ /* ASCII strings each followed by a terminating NULL */ /* */ /* IN/OUT pAsyncRetCode */ /* Optional pointer to int to take the RetCode on */ /* completion of the async part of the call. Only */ /* required if hWnd is NULL. If the request is not */ /* accepted the value in AsyncRetCode is undefined. */ /* It the request was accepted then until the request is */ /* completed AsyncRetCode will contain the value */ /* APPC_CFG_PENDING. Final values are as in the LPARAM of */ /* the completion message. If hWnd != NULL, pAsyncRetCode */ /* must be NULL. */ /* */ /* */ /* Returns */ /* ------- */ /* */ /* On Call */ /* ------- */ /* HANDLE This VerbId will be returned in the WPARAM of any completion */ /* message. (VerbId & APPC_CFG_SUCCESS) evaluates to TRUE if the */ /* request was accepted. */ /* */ /* If the above expression evaluates to FALSE then VerbId will */ /* have one of the following values: */ /* */ /* APPC_CFG_ERROR_NO_APPC_INIT */ /* APPC_CFG_ERROR_INVALID_HWND */ /* APPC_CFG_ERROR_BAD_POINTER */ /* APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE */ /* APPC_CFG_ERROR_TOO_MANY_REQUESTS */ /* APPC_CFG_ERROR_GENERAL_FAILURE */ /* */ /* */ /* */ /* On Receipt of completion message */ /* -------------------------------- */ /* MSG Equal to return from RegisterWindowMessage with */ /* WIN_APPC_CFG_COMPLETION_MSG passed as message name. */ /* */ /* WPARAM VerbId returned on the initiating call. */ /* */ /* LPARAM Retcode which will be one of the following: */ /* */ /* APPC_CFG_SUCCESS_NO_DEFAULT_REMOTE */ /* APPC_CFG_SUCCESS_DEFAULT_REMOTE */ /* */ /* APPC_CFG_ERROR_NO_DEFAULT_LOCAL_LU */ /* APPC_CFG_ERROR_BAD_LOCAL_LU */ /* APPC_CFG_ERROR_GENERAL_FAILURE */ /* */ /* (Retcode & APPC_CFG_ERROR) evaluates to TRUE for an error retcode */ /* (Retcode & APPC_CFG_SUCCESS) evaluates to TRUE for a success retcode */ /* */ /* */ /* */ /* Comments */ /* -------- */ /* This call attempts to get all the remote systems (partner LUs) which can */ /* be accessed by the logged on user with the given local LU and mode name. */ /* The final retcode also indicates if there is a default remote system */ /* configured. */ /* */ /* Completion will either be signified by the posting of a completion */ /* message or by the change of *pAsyncRetCode to a value other than */ /* APPC_CFG_PENDING. The latter mechanism is intended for use by console */ /* apps with no windows or on non-Windows platforms. Completion can then */ /* be tested by code similar to the below: */ /* */ /* while (*pAsyncRetCode == APPC_CFG_PENDING) */ /* { */ /* sleep(250); */ /* } */ /* */ /* Note that one of hWnd & pAsyncRetCode must be NULL and the other valid. */ /* If this isn't the case APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE will be */ /* returned. */ /* */ /* All strings are null terminated and are NOT space padded */ /* */ /* If the buffer is too short, the reported number of remote LU's available */ /* MAY be GREATER than the actual number. (This will only be the case where */ /* a particular Local Lu is configured at multiple nodes, and has the */ /* remote on multiple nodes.) When the call is made again which a buffer */ /* large enough to take all the remote LU, the reported number will be */ /* correct. */ /* */ /* ALL MEMORY TO WHICH POINTERS ARE PASSED MUST REMAIN VALID TILL A */ /* COMPLETION MESSAGE IS RECEIVED */ /* */ /* WinAPPCStartup MUST be called first */ /* */ /*****************************************************************************/ /*****************************************************************************/ /* Entry point prototype */ /*****************************************************************************/ extern HANDLE WINAPI GetAppcConfig( HANDLE hWnd, LPSTR pLocalLu, LPSTR pMode, LPINT pNumRemLu, INT iMaxRemLu, LPSTR pRemLu, LPINT pAsyncRetCode); /*****************************************************************************/ /* Completion Message Name */ /*****************************************************************************/ #define WIN_APPC_CFG_COMPLETION_MSG "WinAppcCfg" /*****************************************************************************/ /* Test values */ /*****************************************************************************/ #define APPC_CFG_SUCCESS 0x1000 #define APPC_CFG_ERROR 0x2000 #define APPC_CFG_PENDING 0xFFFF /*****************************************************************************/ /* Retcodes */ /*****************************************************************************/ #define APPC_CFG_SUCCESS_NO_DEFAULT_REMOTE (APPC_CFG_SUCCESS + 1) #define APPC_CFG_SUCCESS_DEFAULT_REMOTE (APPC_CFG_SUCCESS + 2) #define APPC_CFG_ERROR_NO_DEFAULT_LOCAL_LU (APPC_CFG_ERROR + 1) #define APPC_CFG_ERROR_BAD_LOCAL_LU (APPC_CFG_ERROR + 2) #define APPC_CFG_ERROR_GENERAL_FAILURE (APPC_CFG_ERROR + 3) #define APPC_CFG_ERROR_INVALID_HWND (APPC_CFG_ERROR + 4) #define APPC_CFG_ERROR_BAD_POINTER (APPC_CFG_ERROR + 5) #define APPC_CFG_ERROR_TOO_MANY_REQUESTS (APPC_CFG_ERROR + 6) #define APPC_CFG_ERROR_NO_APPC_INIT (APPC_CFG_ERROR + 7) #define APPC_CFG_ERROR_UNCLEAR_COMPLETION_MODE (APPC_CFG_ERROR + 8)