Milestone 5: deliver embedded RDP sessions and lifecycle hardening
This commit is contained in:
50
third_party/FreeRDP/winpr/libwinpr/wtsapi/test/TestWtsApiEnumerateSessions.c
vendored
Normal file
50
third_party/FreeRDP/winpr/libwinpr/wtsapi/test/TestWtsApiEnumerateSessions.c
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/error.h>
|
||||
#include <winpr/wtsapi.h>
|
||||
#include <winpr/environment.h>
|
||||
|
||||
int TestWtsApiEnumerateSessions(int argc, char* argv[])
|
||||
{
|
||||
DWORD count = 0;
|
||||
BOOL bSuccess = 0;
|
||||
HANDLE hServer = nullptr;
|
||||
PWTS_SESSION_INFOA pSessionInfo = nullptr;
|
||||
|
||||
WINPR_UNUSED(argc);
|
||||
WINPR_UNUSED(argv);
|
||||
|
||||
#ifndef _WIN32
|
||||
if (!GetEnvironmentVariableA("WTSAPI_LIBRARY", nullptr, 0))
|
||||
{
|
||||
printf("%s: No RDS environment detected, skipping test\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
hServer = WTS_CURRENT_SERVER_HANDLE;
|
||||
|
||||
count = 0;
|
||||
pSessionInfo = nullptr;
|
||||
|
||||
bSuccess = WTSEnumerateSessionsA(hServer, 0, 1, &pSessionInfo, &count);
|
||||
|
||||
if (!bSuccess)
|
||||
{
|
||||
printf("WTSEnumerateSessions failed: %" PRIu32 "\n", GetLastError());
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("WTSEnumerateSessions count: %" PRIu32 "\n", count);
|
||||
|
||||
for (DWORD index = 0; index < count; index++)
|
||||
{
|
||||
printf("[%" PRIu32 "] SessionId: %" PRIu32 " WinstationName: '%s' State: %s (%u)\n", index,
|
||||
pSessionInfo[index].SessionId, pSessionInfo[index].pWinStationName,
|
||||
WTSSessionStateToString(pSessionInfo[index].State), pSessionInfo[index].State);
|
||||
}
|
||||
|
||||
WTSFreeMemory(pSessionInfo);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user