Windowns API 第24篇 WTSEnumerateSessions 枚举session信息
Posted prairieNew
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windowns API 第24篇 WTSEnumerateSessions 枚举session信息相关的知识,希望对你有一定的参考价值。
函数原型: BOOL WTSEnumerateSessions( HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFO* ppSessionInfo, DWORD* pCount ); 作用:对当前系统的session信息进行枚举。 参数说明: hServer:指定要对终端断服务枚举的句柄,本机可以的话可以为WTS_CURRENT_SERVER_HANDLE, 或者NULL Reserved:系统保留位,必须为0 Version:指定枚举请求的版本,必须为1 ppSessionInfo:一个WTS_SESSION_INFO结构 可以看一下该结构的定义: typedef struct _WTS_SESSION_INFO { DWORD SessionId; LPTSTR pWinStationName; WTS_CONNECTSTATE_CLASS State; } WTS_SESSION_INFO, * PWTS_SESSION_INFO; 该结构中包含绘画ID, Windows空间站名,session的状态,此状态为枚举值。再次看下一结构 typedef enum _WTS_CONNECTSTATE_CLASS { WTSActive, // User logged on to WinStation WTSConnected, // WinStation connected to client WTSConnectQuery, // In the process of connecting to client WTSShadow, // Shadowing another WinStation WTSDisconnected, // WinStation logged on without client WTSIdle, // Waiting for client to connect WTSListen, // WinStation is listening for connection WTSReset, // WinStation is being reset WTSDown, // WinStation is down due to error WTSInit, // WinStation in initialization } WTS_CONNECTSTATE_CLASS; pCount:返回Session的数量,为输出参数 举例说明:
void main() { PWTS_SESSION_INFO psi; DWORD dwCount; BOOL bRet = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &psi, &dwCount); if (!bRet) return 0; wstring strName; for (unsigned int i = 0; i < dwCount; i ++) { printf("%s ", psi[i].pWinStationName); printf("%d ", psi[i].SessionId); printf("%d ", psi[i].State); } WTSFreeMemory(psi); }
以上是关于Windowns API 第24篇 WTSEnumerateSessions 枚举session信息的主要内容,如果未能解决你的问题,请参考以下文章
高焕堂:Android的API设计(应用篇)_创建App的对象
从苏宁电器到卡巴斯基(第二部)第24篇:半年的职场空窗期 VIII