aboutsummaryrefslogtreecommitdiffstats
path: root/tcc/include/winapi/wtsapi32.h
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-12-12 11:41:26 -0500
committerGravatar Peter McGoron 2023-12-12 11:41:26 -0500
commitff489bd82ff313bcfd7dc2ab585ed31cec909ebd (patch)
tree300e031693a5ddb990a32068ab0596382349aeea /tcc/include/winapi/wtsapi32.h
parentinit (diff)
fix software to compile properly on Windows XP x86
Diffstat (limited to 'tcc/include/winapi/wtsapi32.h')
-rw-r--r--tcc/include/winapi/wtsapi32.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/tcc/include/winapi/wtsapi32.h b/tcc/include/winapi/wtsapi32.h
new file mode 100644
index 0000000..f9f1802
--- /dev/null
+++ b/tcc/include/winapi/wtsapi32.h
@@ -0,0 +1,145 @@
+#ifndef _WTSAPI32_H
+#define _WTSAPI32_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+ // session notification message
+#define WM_WTSSESSION_CHANGE 0x02B1
+
+typedef enum _WTS_INFO_CLASS {
+ WTSInitialProgram = 0,
+ WTSApplicationName = 1,
+ WTSWorkingDirectory = 2,
+ WTSOEMId = 3,
+ WTSSessionId = 4,
+ WTSUserName = 5,
+ WTSWinStationName = 6,
+ WTSDomainName = 7,
+ WTSConnectState = 8,
+ WTSClientBuildNumber = 9,
+ WTSClientName = 10,
+ WTSClientDirectory = 11,
+ WTSClientProductId = 12,
+ WTSClientHardwareId = 13,
+ WTSClientAddress = 14,
+ WTSClientDisplay = 15,
+ WTSClientProtocolType = 16,
+ WTSIdleTime = 17,
+ WTSLogonTime = 18,
+ WTSIncomingBytes = 19,
+ WTSOutgoingBytes = 20,
+ WTSIncomingFrames = 21,
+ WTSOutgoingFrames = 22,
+ WTSClientInfo = 23,
+ WTSSessionInfo = 24
+} WTS_INFO_CLASS;
+
+typedef enum _WTS_CONNECTSTATE_CLASS {
+ WTSActive,
+ WTSConnected,
+ WTSConnectQuery,
+ WTSShadow,
+ WTSDisconnected,
+ WTSIdle,
+ WTSListen,
+ WTSReset,
+ WTSDown,
+ WTSInit
+} WTS_CONNECTSTATE_CLASS;
+
+ // session notification message flags
+#define WTS_CONSOLE_CONNECT 0x1
+#define WTS_CONSOLE_DISCONNECT 0x2
+#define WTS_REMOTE_CONNECT 0x3
+#define WTS_REMOTE_DISCONNECT 0x4
+#define WTS_SESSION_LOGON 0x5
+#define WTS_SESSION_LOGOFF 0x6
+#define WTS_SESSION_LOCK 0x7
+#define WTS_SESSION_UNLOCK 0x8
+#define WTS_SESSION_REMOTE_CONTROL 0x9
+
+ // WTSRegisterSessionNotifiction flags
+#define NOTIFY_FOR_THIS_SESSION 0
+#define NOTIFY_FOR_ALL_SESSIONS 1
+
+BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags);
+BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
+BOOL WINAPI WTSQueryUserToken(ULONG SessionId, PHANDLE pToken);
+
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#if (_WIN32_WINNT >= 0x0500)
+
+typedef struct _WTS_SESSION_INFOW {
+ DWORD SessionId;
+ LPWSTR pWinStationName;
+ WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOW, *PWTS_SESSION_INFOW;
+
+typedef struct _WTS_SESSION_INFOA {
+ DWORD SessionId;
+ LPSTR pWinStationName;
+ WTS_CONNECTSTATE_CLASS State;
+} WTS_SESSION_INFOA, *PWTS_SESSION_INFOA;
+
+#ifdef UNICODE
+#define WTS_SESSION_INFO WTS_SESSION_INFOW
+#define PWTS_SESSION_INFO PWTS_SESSION_INFOW
+#else
+#define WTS_SESSION_INFO WTS_SESSION_INFOA
+#define PWTS_SESSION_INFO PWTS_SESSION_INFOA
+#endif
+
+ // WTSWaitSystemEvent local server handle
+#define WTS_CURRENT_SERVER_HANDLE 0
+#define WTS_CURRENT_SESSION ((DWORD)-1)
+
+ // WTSWaitSystemEvent flags
+#define WTS_EVENT_NONE 0x00000000
+#define WTS_EVENT_CREATE 0x00000001
+#define WTS_EVENT_DELETE 0x00000002
+#define WTS_EVENT_RENAME 0x00000004
+#define WTS_EVENT_CONNECT 0x00000008
+#define WTS_EVENT_DISCONNECT 0x00000010
+#define WTS_EVENT_LOGON 0x00000020
+#define WTS_EVENT_LOGOFF 0x00000040
+#define WTS_EVENT_STATECHANGE 0x00000080
+#define WTS_EVENT_LICENSE 0x00000100
+#define WTS_EVENT_ALL 0x7FFFFFFF
+#define WTS_EVENT_FLUSH 0x80000000
+
+BOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
+ LPSTR *ppBuffer, DWORD *pBytesReturned);
+BOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass,
+ LPTSTR *ppBuffer, DWORD *pBytesReturned);
+BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
+BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait);
+BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version,
+ PWTS_SESSION_INFOW *ppSessionInfo,
+ PDWORD pCount);
+BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version,
+ PWTS_SESSION_INFOA *ppSessionInfo,
+ PDWORD pCount);
+void WINAPI WTSFreeMemory(PVOID pMemory);
+
+#ifdef UNICODE
+#define WTSEnumerateSessions WTSEnumerateSessionsW
+#define WTSQuerySessionInformation WTSQuerySessionInformationW
+#else
+#define WTSEnumerateSessions WTSEnumerateSessionsA
+#define WTSQuerySessionInformation WTSQuerySessionInformationA
+#endif
+
+#endif /* _WIN32_WINNT >= 0x0500 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WTSAPI32_H */