Lists all users who are connected to the currently logged in server or application. Similar to EssListConnections, but includes users hosted in a user directory.
Syntax
ESS_FUNC_M EssListConnectionsEx (hCtx, pCount, ppUserList);
Parameter | Data Type | Description |
---|---|---|
hCtx | ESS_HCTX_T | API context handle (input). |
pCount | ESS_PUSHORT_T | Address of variable to receive count of users (output). |
ppUserList | ESS_PPUSERINFOID_T | Pointer to an array of user information structures (output). The information structures can include user directories and unique identity attributes. |
Notes
pCount contains the number of elements in the ppUserList array.
If hCtx is a Supervisor, ppUserList is a list of users logged in to the server. If hCtx is an Application Designer, ppUserList is a list of users connected to any application for which hCtx is an Application Designer.
Use EssFree() to free the buffer allocated for ppUserList.
Return Value
Returns 0 if successful.
Access
This function requires the caller to have Supervisor or Application Designer privilege.
Example
void DisplayUserInfoID2(ESS_USERINFOID_T userInfo) { ESS_STS_T sts = ESS_STS_NOERR; ESS_BOOL_T isDefined = ESS_TRUE; printf("\tUser Name: %s\n", userInfo.Name); printf("\tProvider Name: %s\n", userInfo.ProviderName); printf("\tConnparam: %s\n", userInfo.connparam); printf("\tDescription: %s\n", userInfo.Description); printf("\tEMail Identification: %s\n", userInfo.EMailID); if (userInfo.LockedOut) printf("\tLocked out: Yes\n"); else printf("\tLocked out: No\n"); if (userInfo.PwdChgNow) printf("\tChange the password now: Yes\n"); else printf("\tChange the password now: No\n"); printf( "\tConnected Application: %s\n", userInfo.AppName); printf( "\tConnected Database: %s\n", userInfo.DbName); if (userInfo.Login) printf("\tLogged in: Yes\n"); else printf("\tLogged in: No\n"); switch(userInfo.Access) { case ESS_ACCESS_ADMIN: printf("\tAccess: %d - ESS_ACCESS_ADMIN\n", userInfo.Access); break; case ESS_ACCESS_APPALL: printf("\tAccess: %d - ESS_ACCESS_APPALL\n", userInfo.Access); break; case ESS_ACCESS_DBALL: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access); break; case ESS_ACCESS_APPCREATE: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access); break; case ESS_ACCESS_APPMANAGE: printf("\tAccess: %d - ESS_ACCESS_APPMANAGE\n", userInfo.Access); break; case ESS_ACCESS_DBCREATE: printf("\tAccess: %d - ESS_ACCESS_DBCREATE\n", userInfo.Access); break; case ESS_ACCESS_DBMANAGE: printf("\tAccess: %d - ESS_ACCESS_DBMANAGE\n", userInfo.Access); break; case ESS_ACCESS_CALC: printf("\tAccess: %d - ESS_ACCESS_CALC\n", userInfo.Access); break; case ESS_ACCESS_WRITE: printf("\tAccess: %d - ESS_ACCESS_WRITE\n", userInfo.Access); break; case ESS_ACCESS_READ: printf("\tAccess: %d - ESS_ACCESS_READ\n", userInfo.Access); break; case ESS_PRIV_USERCREATE: printf("\tAccess: %d - ESS_PRIV_USERCREATE\n", userInfo.Access); break; case ESS_PRIV_APPCREATE: printf("\tAccess: %d - ESS_PRIV_APPCREATE\n", userInfo.Access); break; case ESS_PRIV_APPMANAGE: printf("\tAccess: %d - ESS_PRIV_APPMANAGE\n", userInfo.Access); break; case ESS_PRIV_APPLOAD: printf("\tAccess: %d - ESS_PRIV_APPLOAD\n", userInfo.Access); break; case ESS_PRIV_DBCREATE: printf("\tAccess: %d - ESS_PRIV_DBCREATE\n", userInfo.Access); break; case ESS_PRIV_DBMANAGE: printf("\tAccess: %d - ESS_PRIV_DBMANAGE\n", userInfo.Access); break; case ESS_PRIV_DBLOAD: printf("\tAccess: %d - ESS_PRIV_DBLOAD\n", userInfo.Access); break; case ESS_PRIV_CALC: printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access); break; case ESS_PRIV_WRITE: printf("\tAccess: %d - ESS_PRIV_WRITE\n", userInfo.Access); break; case ESS_PRIV_READ: printf("\tAccess: %d - ESS_PRIV_READ\n", userInfo.Access); break; case ESS_PRIV_NONE: printf("\tAccess: %d - ESS_PRIV_NONE\n", userInfo.Access); break; default: printf("\tAccess: Unknown\n"); } switch(userInfo.MaxAccess) { case ESS_ACCESS_ADMIN: printf("\tMax Access: %d - ESS_ACCESS_ADMIN\n", userInfo.MaxAccess); break; case ESS_ACCESS_APPALL: printf("\tMax Access: %d - ESS_ACCESS_APPALL\n", userInfo.MaxAccess); break; case ESS_ACCESS_DBALL: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess); break; case ESS_ACCESS_APPCREATE: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess); break; case ESS_ACCESS_APPMANAGE: printf("\tMax Access: %d - ESS_ACCESS_APPMANAGE\n", userInfo.MaxAccess); break; case ESS_ACCESS_DBCREATE: printf("\tMax Access: %d - ESS_ACCESS_DBCREATE\n", userInfo.MaxAccess); break; case ESS_ACCESS_DBMANAGE: printf("\tMax Access: %d - ESS_ACCESS_DBMANAGE\n", userInfo.MaxAccess); break; case ESS_ACCESS_CALC: printf("\tMax Access: %d - ESS_ACCESS_CALC\n", userInfo.MaxAccess); break; case ESS_ACCESS_WRITE: printf("\tMax Access: %d - ESS_ACCESS_WRITE\n", userInfo.MaxAccess); break; case ESS_ACCESS_READ: printf("\tMax Access: %d - ESS_ACCESS_READ\n", userInfo.MaxAccess); break; case ESS_PRIV_USERCREATE: printf("\tMax Access: %d - ESS_PRIV_USERCREATE\n", userInfo.MaxAccess); break; case ESS_PRIV_APPCREATE: printf("\tMax Access: %d - ESS_PRIV_APPCREATE\n", userInfo.MaxAccess); break; case ESS_PRIV_APPMANAGE: printf("\tMax Access: %d - ESS_PRIV_APPMANAGE\n", userInfo.MaxAccess); break; case ESS_PRIV_APPLOAD: printf("\tMax Access: %d - ESS_PRIV_APPLOAD\n", userInfo.MaxAccess); break; case ESS_PRIV_DBCREATE: printf("\tMax Access: %d - ESS_PRIV_DBCREATE\n", userInfo.MaxAccess); break; case ESS_PRIV_DBMANAGE: printf("\tMax Access: %d - ESS_PRIV_DBMANAGE\n", userInfo.MaxAccess); break; case ESS_PRIV_DBLOAD: printf("\tMax Access: %d - ESS_PRIV_DBLOAD\n", userInfo.MaxAccess); break; case ESS_PRIV_CALC: printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess); break; case ESS_PRIV_WRITE: printf("\tMax Access: %d - ESS_PRIV_WRITE\n", userInfo.MaxAccess); break; case ESS_PRIV_READ: printf("\tMax Access: %d - ESS_PRIV_READ\n", userInfo.MaxAccess); break; case ESS_PRIV_NONE: printf("\tMax Access: %d - ESS_PRIV_NONE\n", userInfo.MaxAccess); break; default: printf("\tMax Access: Unknown\n"); } printf("\tPassword Expiration in Dates: %d\n",userInfo.Expiration); //EssSdCTime(NULL, userInfo.LastLogin, sizeof(time_string), time_string); //printf("\tLast Successful Login: %s\n", time_string); printf("\tFailed Login Attempts Since Then: %d\n", userInfo.FailCount); printf("\tLogin ID: %ld\n", userInfo.LoginId); printf( "\n"); } ESS_FUNC_M ESS_ListUserConnectionsEx (ESS_HCTX_T hCtx, ESS_HINST_T hInst) { ESS_STS_T sts = ESS_STS_NOERR; ESS_HCTX_T hLocalCtx1; ESS_HCTX_T hLocalCtx2; ESS_USHORT_T usercount, i = 0; ESS_PUSERINFOID_T userInfo = ESS_NULL; ESS_USHORT_T Items; ESS_PAPPDB_T pAppsDbs = ESS_NULL; usercount = 0; memset(&userInfo, '\0', sizeof(userInfo)); sts = EssListConnectionsEx(hCtx, &usercount, &userInfo); printf("EssListConnectionsEx sts: %ld\n", sts); if(!sts) { printf("\nConnection count(s): %d\n", usercount); for(i = 0; i < usercount; i++) { DisplayUserInfoID2(userInfo[i]); } } return(sts); }