From 45cea5bb2a92d87123e445231330acd70da057d2 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Sun, 10 Sep 2023 15:28:08 +0000
Subject: [PATCH] headers: Add missing symbols in wtsapi32.h

Required for chromium

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/include/wtsapi32.h | 263 ++++++++++++++++++++++++++-
 1 file changed, 254 insertions(+), 9 deletions(-)

diff --git a/mingw-w64-headers/include/wtsapi32.h 
b/mingw-w64-headers/include/wtsapi32.h
index bb37e8f..c0afd12 100644
--- a/mingw-w64-headers/include/wtsapi32.h
+++ b/mingw-w64-headers/include/wtsapi32.h
@@ -17,6 +17,7 @@ extern "C" {
 #define WTS_CURRENT_SERVER_NAME (NULL)
 
 #define WTS_CURRENT_SESSION ((DWORD)-1)
+#define WTS_ANY_SESSION ((DWORD)-2)
 
 #ifndef IDTIMEOUT
 #define IDTIMEOUT 32000
@@ -25,6 +26,12 @@ extern "C" {
 #define IDASYNC 32001
 #endif
 
+#define USERNAME_LENGTH         20
+#define CLIENTNAME_LENGTH       20
+#define CLIENTADDRESS_LENGTH    30
+#define WINSTATIONNAME_LENGTH   32
+#define DOMAIN_LENGTH           17
+
 #define WTS_WSD_LOGOFF 0x1
 #define WTS_WSD_SHUTDOWN 0x2
 #define WTS_WSD_REBOOT 0x4
@@ -32,6 +39,39 @@ extern "C" {
 
 #define WTS_WSD_FASTREBOOT 0x10
 
+#define MAX_ELAPSED_TIME_LENGTH 15
+#define MAX_DATE_TIME_LENGTH 56
+#define WINSTATIONNAME_LENGTH 32
+#define DOMAIN_LENGTH 17
+
+#define WTS_DRIVE_LENGTH 3
+#define WTS_LISTENER_NAME_LENGTH 32
+#define WTS_COMMENT_LENGTH 60
+
+#define WTS_LISTENER_CREATE 0x00000001
+#define WTS_LISTENER_UPDATE 0x00000010
+
+#define WTS_SECURITY_QUERY_INFORMATION 0x00000001
+#define WTS_SECURITY_SET_INFORMATION 0x00000002
+#define WTS_SECURITY_RESET 0x00000004
+#define WTS_SECURITY_VIRTUAL_CHANNELS 0x00000008
+#define WTS_SECURITY_REMOTE_CONTROL 0x00000010
+#define WTS_SECURITY_LOGON 0x00000020
+#define WTS_SECURITY_LOGOFF 0x00000040
+#define WTS_SECURITY_MESSAGE 0x00000080
+#define WTS_SECURITY_CONNECT 0x00000100
+#define WTS_SECURITY_DISCONNECT 0x00000200
+
+#define WTS_SECURITY_GUEST_ACCESS (WTS_SECURITY_LOGON)
+
+#define WTS_SECURITY_CURRENT_GUEST_ACCESS (WTS_SECURITY_VIRTUAL_CHANNELS | 
WTS_SECURITY_LOGOFF)
+
+#define WTS_SECURITY_USER_ACCESS (WTS_SECURITY_CURRENT_GUEST_ACCESS | 
WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_CONNECT)
+
+#define WTS_SECURITY_CURRENT_USER_ACCESS (WTS_SECURITY_SET_INFORMATION | 
WTS_SECURITY_RESET | WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF | 
WTS_SECURITY_DISCONNECT)
+
+#define WTS_SECURITY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 
WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_SET_INFORMATION | 
WTS_SECURITY_RESET | WTS_SECURITY_VIRTUAL_CHANNELS | 
WTS_SECURITY_REMOTE_CONTROL | WTS_SECURITY_LOGON | WTS_SECURITY_MESSAGE | 
WTS_SECURITY_CONNECT | WTS_SECURITY_DISCONNECT)
+
   typedef enum _WTS_CONNECTSTATE_CLASS {
     
WTSActive,WTSConnected,WTSConnectQuery,WTSShadow,WTSDisconnected,WTSIdle,WTSListen,WTSReset,WTSDown,WTSInit
   } WTS_CONNECTSTATE_CLASS;
@@ -108,9 +148,45 @@ extern "C" {
     WTSIncomingFrames       = 21,
     WTSOutgoingFrames       = 22,
     WTSClientInfo           = 23,
-    WTSSessionInfo          = 24
+    WTSSessionInfo          = 24,
+    WTSSessionInfoEx        = 25,
+    WTSConfigInfo           = 26,
+    WTSValidationInfo       = 27,
+    WTSSessionAddressV4     = 28,
+    WTSIsRemoteSession      = 29
   } WTS_INFO_CLASS;
 
+  typedef struct _WTSCONFIGINFOW {
+    ULONG version; 
+    ULONG fConnectClientDrivesAtLogon;
+    ULONG fConnectPrinterAtLogon;
+    ULONG fDisablePrinterRedirection;
+    ULONG fDisableDefaultMainClientPrinter;
+    ULONG ShadowSettings;
+    WCHAR LogonUserName[USERNAME_LENGTH + 1 ];
+    WCHAR LogonDomain[DOMAIN_LENGTH + 1 ];
+    WCHAR WorkDirectory[MAX_PATH + 1 ];
+    WCHAR InitialProgram[MAX_PATH + 1 ];
+    WCHAR ApplicationName[MAX_PATH + 1 ];
+  } WTSCONFIGINFOW, *PWTSCONFIGINFOW;
+
+  typedef struct _WTSCONFIGINFOA {
+    ULONG version; 
+    ULONG fConnectClientDrivesAtLogon;
+    ULONG fConnectPrinterAtLogon;
+    ULONG fDisablePrinterRedirection;
+    ULONG fDisableDefaultMainClientPrinter;
+    ULONG ShadowSettings;
+    CHAR LogonUserName[USERNAME_LENGTH + 1 ];
+    CHAR LogonDomain[DOMAIN_LENGTH + 1 ];
+    CHAR WorkDirectory[MAX_PATH + 1 ];
+    CHAR InitialProgram[MAX_PATH + 1 ];
+    CHAR ApplicationName[MAX_PATH + 1 ];
+  } WTSCONFIGINFOA, *PWTSCONFIGINFOA;
+
+__MINGW_TYPEDEF_AW(WTSCONFIGINFO)
+__MINGW_TYPEDEF_AW(PWTSCONFIGINFO)
+
   typedef struct _WTS_CLIENT_ADDRESS {
     DWORD AddressFamily;
     BYTE Address[20];
@@ -128,9 +204,58 @@ extern "C" {
     
WTSUserConfigfDeviceClientDrives,WTSUserConfigfDeviceClientPrinters,WTSUserConfigfDeviceClientDefaultPrinter,WTSUserConfigBrokenTimeoutSettings,
     
WTSUserConfigReconnectSettings,WTSUserConfigModemCallbackSettings,WTSUserConfigModemCallbackPhoneNumber,WTSUserConfigShadowingSettings,
     
WTSUserConfigTerminalServerProfilePath,WTSUserConfigTerminalServerHomeDir,WTSUserConfigTerminalServerHomeDirDrive,
-    WTSUserConfigfTerminalServerRemoteHomeDir
+    WTSUserConfigfTerminalServerRemoteHomeDir,WTSUserConfigUser
   } WTS_CONFIG_CLASS;
 
+  typedef enum _WTS_CONFIG_SOURCE {
+    WTSUserConfigSourceSAM
+  } WTS_CONFIG_SOURCE;
+
+  typedef struct _WTSUSERCONFIGA {
+    DWORD Source;
+    DWORD InheritInitialProgram;
+    DWORD AllowLogonTerminalServer;
+    DWORD TimeoutSettingsConnections;
+    DWORD TimeoutSettingsDisconnections;
+    DWORD TimeoutSettingsIdle;
+    DWORD DeviceClientDrives;
+    DWORD DeviceClientPrinters;
+    DWORD ClientDefaultPrinter;
+    DWORD BrokenTimeoutSettings;
+    DWORD ReconnectSettings;
+    DWORD ShadowingSettings;
+    DWORD TerminalServerRemoteHomeDir;
+    CHAR InitialProgram[ MAX_PATH + 1 ];
+    CHAR WorkDirectory[ MAX_PATH + 1 ];
+    CHAR TerminalServerProfilePath[ MAX_PATH + 1 ];
+    CHAR TerminalServerHomeDir[ MAX_PATH + 1 ];
+    CHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ];
+  } WTSUSERCONFIGA, *PWTSUSERCONFIGA;
+
+  typedef struct _WTSUSERCONFIGW {
+    DWORD Source;
+    DWORD InheritInitialProgram;
+    DWORD AllowLogonTerminalServer;
+    DWORD TimeoutSettingsConnections;
+    DWORD TimeoutSettingsDisconnections;
+    DWORD TimeoutSettingsIdle;
+    DWORD DeviceClientDrives;
+    DWORD DeviceClientPrinters;
+    DWORD ClientDefaultPrinter;
+    DWORD BrokenTimeoutSettings;
+    DWORD ReconnectSettings;
+    DWORD ShadowingSettings;
+    DWORD TerminalServerRemoteHomeDir;
+    WCHAR InitialProgram[ MAX_PATH + 1 ];
+    WCHAR WorkDirectory[ MAX_PATH + 1 ];
+    WCHAR TerminalServerProfilePath[ MAX_PATH + 1 ];
+    WCHAR TerminalServerHomeDir[ MAX_PATH + 1 ];
+    WCHAR TerminalServerHomeDirDrive[ WTS_DRIVE_LENGTH + 1 ];
+  } WTSUSERCONFIGW, *PWTSUSERCONFIGW;
+
+__MINGW_TYPEDEF_AW(WTSUSERCONFIG)
+__MINGW_TYPEDEF_AW(PWTSUSERCONFIG)
+
 #define WTS_EVENT_NONE 0x0
 #define WTS_EVENT_CREATE 0x1
 #define WTS_EVENT_DELETE 0x2
@@ -144,12 +269,22 @@ extern "C" {
 #define WTS_EVENT_ALL 0x7fffffff
 #define WTS_EVENT_FLUSH 0x80000000
 
+#define REMOTECONTROL_KBDSHIFT_HOTKEY 0x1
+#define REMOTECONTROL_KBDCTRL_HOTKEY 0x2
+#define REMOTECONTROL_KBDALT_HOTKEY 0x4
+
   typedef enum _WTS_VIRTUAL_CLASS {
     WTSVirtualClientData,WTSVirtualFileHandle
   } WTS_VIRTUAL_CLASS;
 
+  typedef struct _WTS_SESSION_ADDRESS {
+    DWORD AddressFamily;
+    BYTE Address[20];
+  } WTS_SESSION_ADDRESS, *PWTS_SESSION_ADDRESS;
+
 #define WTSEnumerateServers __MINGW_NAME_AW(WTSEnumerateServers)
 #define WTSOpenServer __MINGW_NAME_AW(WTSOpenServer)
+#define WTSOpenServerEx __MINGW_NAME_AW(WTSOpenServerEx)
 #define WTSEnumerateSessions __MINGW_NAME_AW(WTSEnumerateSessions)
 #define WTSEnumerateProcesses __MINGW_NAME_AW(WTSEnumerateProcesses)
 #define WTSQuerySessionInformation __MINGW_NAME_AW(WTSQuerySessionInformation)
@@ -161,6 +296,8 @@ extern "C" {
   WINBOOL WINAPI WTSEnumerateServersA(LPSTR pDomainName,DWORD Reserved,DWORD 
Version,PWTS_SERVER_INFOA *ppServerInfo,DWORD *pCount);
   HANDLE WINAPI WTSOpenServerW(LPWSTR pServerName);
   HANDLE WINAPI WTSOpenServerA(LPSTR pServerName);
+  HANDLE WINAPI WTSOpenServerExW(LPWSTR pServerName);
+  HANDLE WINAPI WTSOpenServerExA(LPSTR pServerName);
   VOID WINAPI WTSCloseServer(HANDLE hServer);
   WINBOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer,DWORD Reserved,DWORD 
Version,PWTS_SESSION_INFOW *ppSessionInfo,DWORD *pCount);
   WINBOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer,DWORD Reserved,DWORD 
Version,PWTS_SESSION_INFOA *ppSessionInfo,DWORD *pCount);
@@ -195,13 +332,6 @@ extern "C" {
   WINBOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd);
   WINBOOL WINAPI WTSQueryUserToken(ULONG SessionId,PHANDLE phToken);
 
-
-#define USERNAME_LENGTH         20
-#define CLIENTNAME_LENGTH       20
-#define CLIENTADDRESS_LENGTH    30
-#define WINSTATIONNAME_LENGTH   32
-#define DOMAIN_LENGTH           17
-
 #if (_WIN32_WINNT >= 0x0600)
 typedef struct _WTSCLIENTW {
   WCHAR   ClientName[CLIENTNAME_LENGTH + 1];
@@ -250,6 +380,43 @@ typedef struct _WTSCLIENTA {
 __MINGW_TYPEDEF_AW(WTSCLIENT)
 __MINGW_TYPEDEF_AW(PWTSCLIENT)
 
+#define PRODUCTINFO_COMPANYNAME_LENGTH 256
+#define PRODUCTINFO_PRODUCTID_LENGTH 4
+
+  typedef struct _WTS_PRODUCT_INFOA {
+    CHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH];
+    CHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH];
+  } PRODUCT_INFOA;
+
+  typedef struct _WTS_PRODUCT_INFOW {
+    WCHAR CompanyName[PRODUCTINFO_COMPANYNAME_LENGTH];
+    WCHAR ProductID[PRODUCTINFO_PRODUCTID_LENGTH];
+  } PRODUCT_INFOW;
+
+__MINGW_TYPEDEF_AW(PRODUCT_INFO)
+
+#define VALIDATIONINFORMATION_LICENSE_LENGTH 16384
+#define VALIDATIONINFORMATION_HARDWAREID_LENGTH 20
+
+  typedef struct _WTS_VALIDATION_INFORMATIONA {
+    PRODUCT_INFOA ProductInfo;
+    BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH];
+    DWORD LicenseLength;
+    BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH];
+    DWORD HardwareIDLength;
+  } WTS_VALIDATION_INFORMATIONA, *PWTS_VALIDATION_INFORMATIONA;
+
+  typedef struct _WTS_VALIDATION_INFORMATIONW {
+    PRODUCT_INFOW ProductInfo;
+    BYTE License[VALIDATIONINFORMATION_LICENSE_LENGTH];
+    DWORD LicenseLength;
+    BYTE HardwareID[VALIDATIONINFORMATION_HARDWAREID_LENGTH];
+    DWORD HardwareIDLength;
+  } WTS_VALIDATION_INFORMATIONW, *PWTS_VALIDATION_INFORMATIONW;
+
+__MINGW_TYPEDEF_AW(WTS_VALIDATION_INFORMATION)
+__MINGW_TYPEDEF_AW(PWTS_VALIDATION_INFORMATION)
+
 typedef struct _WTSINFOW {
   WTS_CONNECTSTATE_CLASS State;
   DWORD                  SessionId;
@@ -291,6 +458,77 @@ typedef struct _WTSINFOA {
 __MINGW_TYPEDEF_AW(WTSINFO)
 __MINGW_TYPEDEF_AW(PWTSINFO)
 
+#define WTS_SESSIONSTATE_UNKNOWN 0xffffffff
+#define WTS_SESSIONSTATE_LOCK 0x00000000
+#define WTS_SESSIONSTATE_UNLOCK 0x00000001
+
+  typedef struct _WTSINFOEX_LEVEL1_W {
+    ULONG SessionId;
+    WTS_CONNECTSTATE_CLASS SessionState;
+    LONG SessionFlags;
+    WCHAR WinStationName[WINSTATIONNAME_LENGTH + 1];
+    WCHAR UserName[USERNAME_LENGTH + 1];
+    WCHAR DomainName[DOMAIN_LENGTH + 1];
+    LARGE_INTEGER LogonTime;
+    LARGE_INTEGER ConnectTime;
+    LARGE_INTEGER DisconnectTime;
+    LARGE_INTEGER LastInputTime;
+    LARGE_INTEGER CurrentTime;
+    DWORD IncomingBytes;
+    DWORD OutgoingBytes;
+    DWORD IncomingFrames;
+    DWORD OutgoingFrames;
+    DWORD IncomingCompressedBytes;
+    DWORD OutgoingCompressedBytes;
+  } WTSINFOEX_LEVEL1_W, *PWTSINFOEX_LEVEL1_W;
+
+  typedef struct _WTSINFOEX_LEVEL1_A {
+    ULONG SessionId;
+    WTS_CONNECTSTATE_CLASS SessionState;
+    LONG SessionFlags;
+    CHAR WinStationName[WINSTATIONNAME_LENGTH + 1];
+    CHAR UserName[USERNAME_LENGTH + 1];
+    CHAR DomainName[DOMAIN_LENGTH + 1];
+    LARGE_INTEGER LogonTime;
+    LARGE_INTEGER ConnectTime;
+    LARGE_INTEGER DisconnectTime;
+    LARGE_INTEGER LastInputTime;
+    LARGE_INTEGER CurrentTime;
+    DWORD IncomingBytes;
+    DWORD OutgoingBytes;
+    DWORD IncomingFrames;
+    DWORD OutgoingFrames;
+    DWORD IncomingCompressedBytes;
+    DWORD OutgoingCompressedBytes;
+  } WTSINFOEX_LEVEL1_A, *PWTSINFOEX_LEVEL1_A;
+
+__MINGW_TYPEDEF_UAW(WTSINFOEX_LEVEL1)
+__MINGW_TYPEDEF_UAW(PWTSINFOEX_LEVEL1)
+
+  typedef union _WTSINFOEX_LEVEL_W {
+    WTSINFOEX_LEVEL1_W WTSInfoExLevel1;
+  } WTSINFOEX_LEVEL_W, *PWTSINFOEX_LEVEL_W;
+
+  typedef union _WTSINFOEX_LEVEL_A {
+    WTSINFOEX_LEVEL1_A WTSInfoExLevel1;
+  } WTSINFOEX_LEVEL_A, *PWTSINFOEX_LEVEL_A;
+
+__MINGW_TYPEDEF_UAW(WTSINFOEX_LEVEL)
+__MINGW_TYPEDEF_UAW(PWTSINFOEX_LEVEL)
+
+  typedef struct _WTSINFOEXW {
+    DWORD Level;
+    WTSINFOEX_LEVEL_W Data;
+  } WTSINFOEXW, *PWTSINFOEXW;
+
+  typedef struct _WTSINFOEXA {
+    DWORD Level;
+    WTSINFOEX_LEVEL_A Data;
+  } WTSINFOEXA, *PWTSINFOEXA;
+
+__MINGW_TYPEDEF_AW(WTSINFOEX)
+__MINGW_TYPEDEF_AW(PWTSINFOEX)
+
 WINBOOL WINAPI WTSConnectSessionA(
   ULONG LogonId,
   ULONG TargetLogonId,
@@ -337,6 +575,13 @@ WINBOOL WINAPI WTSUnRegisterSessionNotificationEx(
   HWND hWnd
 );
 
+#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001
+#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW 0x00000000
+#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_MED 0x00000002
+#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_HIGH 0x00000004
+#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_REAL 0x00000006
+#define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008
+
 HANDLE WINAPI WTSVirtualChannelOpenEx(
   DWORD SessionId,
   LPSTR pVirtualName,
-- 
2.42.0

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to