1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_TSSBX
7 #define _INC_TSSBX
8 
9 #if (_WIN32_WINNT >= 0x0600)
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 typedef enum _WTSSBX_ADDRESS_FAMILY {
16   WTSSBX_ADDRESS_FAMILY_AF_UNSPEC    = 0,
17   WTSSBX_ADDRESS_FAMILY_AF_INET      = 1,
18   WTSSBX_ADDRESS_FAMILY_AF_INET6     = 2,
19   WTSSBX_ADDRESS_FAMILY_AF_IPX       = 3,
20   WTSSBX_ADDRESS_FAMILY_AF_NETBIOS   = 4
21 } WTSSBX_ADDRESS_FAMILY;
22 
23 typedef enum _WTSSBX_MACHINE_DRAIN {
24   WTSSBX_MACHINE_DRAIN_UNSPEC   = 0,
25   WTSSBX_MACHINE_DRAIN_OFF      = 1,
26   WTSSBX_MACHINE_DRAIN_ON       = 2
27 } WTSSBX_MACHINE_DRAIN;
28 
29 typedef enum _WTSSBX_NOTIFICATION_TYPE {
30   WTSSBX_MACHINE_SESSION_MODE_UNSPEC     = 0,
31   WTSSBX_MACHINE_SESSION_MODE_SINGLE     = 1,
32   WTSSBX_MACHINE_SESSION_MODE_MULTIPLE   = 2
33 } WTSSBX_NOTIFICATION_TYPE;
34 
35 typedef enum _WTSSBX_MACHINE_STATE {
36   WTSSBX_MACHINE_STATE_UNSPEC          = 0,
37   WTSSBX_MACHINE_STATE_READY           = 1,
38   WTSSBX_MACHINE_STATE_SYNCHRONIZING   = 2
39 } WTSSBX_MACHINE_STATE;
40 
41 typedef enum _WTSSBX_NOTIFICATION_TYPE {
42   WTSSBX_NOTIFICATION_REMOVED   = 1,
43   WTSSBX_NOTIFICATION_CHANGED   = 2,
44   WTSSBX_NOTIFICATION_ADDED     = 4,
45   WTSSBX_NOTIFICATION_RESYNC    = 8
46 } WTSSBX_NOTIFICATION_TYPE;
47 
48 typedef enum _WTSSBX_SESSION_STATE {
49   WTSSBX_SESSION_STATE_UNSPEC         = 0,
50   WTSSBX_SESSION_STATE_ACTIVE         = 1,
51   WTSSBX_SESSION_STATE_DISCONNECTED   = 2
52 } WTSSBX_SESSION_STATE;
53 
54 typedef struct _WTSSBX_IP_ADDRESS {
55   WTSSBX_ADDRESS_FAMILY  AddressFamily;
56   BYTE                   Address[16];
57   unsigned short         PortNumber;
58   DWORD                  dwScope;
59 } WTSSBX_IP_ADDRESS;
60 
61 #define MaxFQDN_Len 256
62 #define MaxNetBiosName_Len 16
63 
64 typedef struct _WTSSBX_MACHINE_CONNECT_INFO {
65   WCHAR              wczMachineFQDN[MaxFQDN_Len + 1];
66   WCHAR              wczMachineNetBiosName[MaxNetBiosName_Len + 1];
67   DWORD              dwNumOfIPAddr;
68   WTSSBX_IP_ADDRESS  IPaddr[MaxNumOfExposed_IPs];
69 } WTSSBX_MACHINE_CONNECT_INFO;
70 
71 #define MaxFarm_Len 256
72 
73 typedef struct _WTSSBX_MACHINE_INFO {
74   WTSSBX_MACHINE_CONNECT_INFO  ClientConnectInfo;
75   WCHAR                        wczFarmName[MaxFarm_Len + 1];
76   WTSSBX_IP_ADDRESS            InternalIPAddress;
77   DWORD                        dwMaxSessionsLimit;
78   DWORD                        ServerWeight;
79   WTSSBX_MACHINE_SESSION_MODE  SingleSessionMode;
80   WTSSBX_MACHINE_DRAIN         InDrain;
81   WTSSBX_MACHINE_STATE         MachineState;
82 } WTSSBX_MACHINE_INFO;
83 
84 #define MaxUserName_Len 104
85 #define MaxDomainName_Len 256
86 #define MaxAppName_Len 256
87 
88 typedef struct _WTSSBX_SESSION_INFO {
89   WCHAR                 wszUserName[MaxUserName_Len + 1];
90   WCHAR                 wszDomainName[MaxDomainName_Len + 1];
91   WCHAR                 ApplicationType[MaxAppName_Len + 1];
92   DWORD                 dwSessionId;
93   FILETIME              CreateTime;
94   FILETIME              DisconnectTime;
95   WTSSBX_SESSION_STATE  SessionState;
96 } WTSSBX_SESSION_INFO;
97 
98 /* IID_IWTSSBPlugin is defined as DC44BE78-B18D-4399-B210-641BF67A002C */
99 
100 #ifdef __cplusplus
101 }
102 #endif
103 
104 #endif /*(_WIN32_WINNT >= 0x0600)*/
105 
106 #endif /*_INC_TSSBX*/
107