| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_WTSAPI | |
| #define _INC_WTSAPI | |
| #include <_mingw_unicode.h> | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #define WTS_CURRENT_SERVER ((HANDLE)NULL) | |
| #define WTS_CURRENT_SERVER_HANDLE ((HANDLE)NULL) | |
| #define WTS_CURRENT_SERVER_NAME (NULL) | |
| #define WTS_CURRENT_SESSION ((DWORD)-1) | |
| #define WTS_ANY_SESSION ((DWORD)-2) | |
| #ifndef IDTIMEOUT | |
| #define IDTIMEOUT 32000 | |
| #endif | |
| #ifndef IDASYNC | |
| #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 | |
| #define WTS_WSD_POWEROFF 0x8 | |
| #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; | |
| typedef struct _WTS_SERVER_INFOW { | |
| LPWSTR pServerName; | |
| } WTS_SERVER_INFOW,*PWTS_SERVER_INFOW; | |
| typedef struct _WTS_SERVER_INFOA { | |
| LPSTR pServerName; | |
| } WTS_SERVER_INFOA,*PWTS_SERVER_INFOA; | |
| #define WTS_SERVER_INFO __MINGW_NAME_AW(WTS_SERVER_INFO) | |
| #define PWTS_SERVER_INFO __MINGW_NAME_AW(PWTS_SERVER_INFO) | |
| 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; | |
| #define WTS_SESSION_INFO __MINGW_NAME_AW(WTS_SESSION_INFO) | |
| #define PWTS_SESSION_INFO __MINGW_NAME_AW(PWTS_SESSION_INFO) | |
| typedef struct _WTS_PROCESS_INFOW { | |
| DWORD SessionId; | |
| DWORD ProcessId; | |
| LPWSTR pProcessName; | |
| PSID pUserSid; | |
| } WTS_PROCESS_INFOW,*PWTS_PROCESS_INFOW; | |
| typedef struct _WTS_PROCESS_INFOA { | |
| DWORD SessionId; | |
| DWORD ProcessId; | |
| LPSTR pProcessName; | |
| PSID pUserSid; | |
| } WTS_PROCESS_INFOA,*PWTS_PROCESS_INFOA; | |
| #define WTS_PROCESS_INFO __MINGW_NAME_AW(WTS_PROCESS_INFO) | |
| #define PWTS_PROCESS_INFO __MINGW_NAME_AW(PWTS_PROCESS_INFO) | |
| #define WTS_PROTOCOL_TYPE_CONSOLE 0 | |
| #define WTS_PROTOCOL_TYPE_ICA 1 | |
| #define WTS_PROTOCOL_TYPE_RDP 2 | |
| 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, | |
| 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]; | |
| } WTS_CLIENT_ADDRESS,*PWTS_CLIENT_ADDRESS; | |
| typedef struct _WTS_CLIENT_DISPLAY { | |
| DWORD HorizontalResolution; | |
| DWORD VerticalResolution; | |
| DWORD ColorDepth; | |
| } WTS_CLIENT_DISPLAY,*PWTS_CLIENT_DISPLAY; | |
| typedef enum _WTS_CONFIG_CLASS { | |
| WTSUserConfigInitialProgram,WTSUserConfigWorkingDirectory,WTSUserConfigfInheritInitialProgram,WTSUserConfigfAllowLogonTerminalServer, | |
| WTSUserConfigTimeoutSettingsConnections,WTSUserConfigTimeoutSettingsDisconnections,WTSUserConfigTimeoutSettingsIdle, | |
| WTSUserConfigfDeviceClientDrives,WTSUserConfigfDeviceClientPrinters,WTSUserConfigfDeviceClientDefaultPrinter,WTSUserConfigBrokenTimeoutSettings, | |
| WTSUserConfigReconnectSettings,WTSUserConfigModemCallbackSettings,WTSUserConfigModemCallbackPhoneNumber,WTSUserConfigShadowingSettings, | |
| WTSUserConfigTerminalServerProfilePath,WTSUserConfigTerminalServerHomeDir,WTSUserConfigTerminalServerHomeDirDrive, | |
| 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 | |
| #define WTS_EVENT_RENAME 0x4 | |
| #define WTS_EVENT_CONNECT 0x8 | |
| #define WTS_EVENT_DISCONNECT 0x10 | |
| #define WTS_EVENT_LOGON 0x20 | |
| #define WTS_EVENT_LOGOFF 0x40 | |
| #define WTS_EVENT_STATECHANGE 0x80 | |
| #define WTS_EVENT_LICENSE 0x100 | |
| #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) | |
| #define WTSQueryUserConfig __MINGW_NAME_AW(WTSQueryUserConfig) | |
| #define WTSSetUserConfig __MINGW_NAME_AW(WTSSetUserConfig) | |
| #define WTSSendMessage __MINGW_NAME_AW(WTSSendMessage) | |
| WINBOOL WINAPI WTSEnumerateServersW(LPWSTR pDomainName,DWORD Reserved,DWORD Version,PWTS_SERVER_INFOW *ppServerInfo,DWORD *pCount); | |
| 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); | |
| WINBOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_PROCESS_INFOW *ppProcessInfo,DWORD *pCount); | |
| WINBOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer,DWORD Reserved,DWORD Version,PWTS_PROCESS_INFOA *ppProcessInfo,DWORD *pCount); | |
| WINBOOL WINAPI WTSTerminateProcess(HANDLE hServer,DWORD ProcessId,DWORD ExitCode); | |
| WINBOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer,DWORD SessionId,WTS_INFO_CLASS WTSInfoClass,LPWSTR *ppBuffer,DWORD *pBytesReturned); | |
| WINBOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer,DWORD SessionId,WTS_INFO_CLASS WTSInfoClass,LPSTR *ppBuffer,DWORD *pBytesReturned); | |
| WINBOOL WINAPI WTSQueryUserConfigW(LPWSTR pServerName,LPWSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPWSTR *ppBuffer,DWORD *pBytesReturned); | |
| WINBOOL WINAPI WTSQueryUserConfigA(LPSTR pServerName,LPSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPSTR *ppBuffer,DWORD *pBytesReturned); | |
| WINBOOL WINAPI WTSSetUserConfigW(LPWSTR pServerName,LPWSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPWSTR pBuffer,DWORD DataLength); | |
| WINBOOL WINAPI WTSSetUserConfigA(LPSTR pServerName,LPSTR pUserName,WTS_CONFIG_CLASS WTSConfigClass,LPSTR pBuffer,DWORD DataLength); | |
| WINBOOL WINAPI WTSSendMessageW(HANDLE hServer,DWORD SessionId,LPWSTR pTitle,DWORD TitleLength,LPWSTR pMessage,DWORD MessageLength,DWORD Style,DWORD Timeout,DWORD *pResponse,WINBOOL bWait); | |
| WINBOOL WINAPI WTSSendMessageA(HANDLE hServer,DWORD SessionId,LPSTR pTitle,DWORD TitleLength,LPSTR pMessage,DWORD MessageLength,DWORD Style,DWORD Timeout,DWORD *pResponse,WINBOOL bWait); | |
| WINBOOL WINAPI WTSDisconnectSession(HANDLE hServer,DWORD SessionId,WINBOOL bWait); | |
| WINBOOL WINAPI WTSLogoffSession(HANDLE hServer,DWORD SessionId,WINBOOL bWait); | |
| WINBOOL WINAPI WTSShutdownSystem(HANDLE hServer,DWORD ShutdownFlag); | |
| WINBOOL WINAPI WTSWaitSystemEvent(HANDLE hServer,DWORD EventMask,DWORD *pEventFlags); | |
| HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer,DWORD SessionId,LPSTR pVirtualName); | |
| WINBOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle); | |
| WINBOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle,ULONG TimeOut,PCHAR Buffer,ULONG BufferSize,PULONG pBytesRead); | |
| WINBOOL WINAPI WTSVirtualChannelWrite(HANDLE hChannelHandle,PCHAR Buffer,ULONG Length,PULONG pBytesWritten); | |
| WINBOOL WINAPI WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); | |
| WINBOOL WINAPI WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); | |
| WINBOOL WINAPI WTSVirtualChannelQuery(HANDLE hChannelHandle,WTS_VIRTUAL_CLASS,PVOID *ppBuffer,DWORD *pBytesReturned); | |
| VOID WINAPI WTSFreeMemory(PVOID pMemory); | |
| #define NOTIFY_FOR_ALL_SESSIONS 1 | |
| #define NOTIFY_FOR_THIS_SESSION 0 | |
| WINBOOL WINAPI WTSRegisterSessionNotification(HWND hWnd,DWORD dwFlags); | |
| WINBOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd); | |
| WINBOOL WINAPI WTSQueryUserToken(ULONG SessionId,PHANDLE phToken); | |
| #if (_WIN32_WINNT >= 0x0600) | |
| typedef struct _WTSCLIENTW { | |
| WCHAR ClientName[CLIENTNAME_LENGTH + 1]; | |
| WCHAR Domain[DOMAIN_LENGTH + 1 ]; | |
| WCHAR UserName[USERNAME_LENGTH + 1]; | |
| WCHAR WorkDirectory[MAX_PATH + 1]; | |
| WCHAR InitialProgram[MAX_PATH + 1]; | |
| BYTE EncryptionLevel; | |
| ULONG ClientAddressFamily; | |
| USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; | |
| USHORT HRes; | |
| USHORT VRes; | |
| USHORT ColorDepth; | |
| WCHAR ClientDirectory[MAX_PATH + 1]; | |
| ULONG ClientBuildNumber; | |
| ULONG ClientHardwareId; | |
| USHORT ClientProductId; | |
| USHORT OutBufCountHost; | |
| USHORT OutBufCountClient; | |
| USHORT OutBufLength; | |
| WCHAR DeviceId[MAX_PATH + 1]; | |
| } WTSCLIENTW, *PWTSCLIENTW; | |
| typedef struct _WTSCLIENTA { | |
| CHAR ClientName[CLIENTNAME_LENGTH + 1]; | |
| CHAR Domain[DOMAIN_LENGTH + 1 ]; | |
| CHAR UserName[USERNAME_LENGTH + 1]; | |
| CHAR WorkDirectory[MAX_PATH + 1]; | |
| CHAR InitialProgram[MAX_PATH + 1]; | |
| BYTE EncryptionLevel; | |
| ULONG ClientAddressFamily; | |
| USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; | |
| USHORT HRes; | |
| USHORT VRes; | |
| USHORT ColorDepth; | |
| CHAR ClientDirectory[MAX_PATH + 1]; | |
| ULONG ClientBuildNumber; | |
| ULONG ClientHardwareId; | |
| USHORT ClientProductId; | |
| USHORT OutBufCountHost; | |
| USHORT OutBufCountClient; | |
| USHORT OutBufLength; | |
| CHAR DeviceId[MAX_PATH + 1]; | |
| } WTSCLIENTA, *PWTSCLIENTA; | |
| __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; | |
| DWORD IncomingBytes; | |
| DWORD OutgoingBytes; | |
| DWORD IncomingFrames; | |
| DWORD OutgoingFrames; | |
| DWORD IncomingCompressedBytes; | |
| DWORD OutgoingCompressedBytes; | |
| WCHAR WinStationName[WINSTATIONNAME_LENGTH]; | |
| WCHAR Domain[DOMAIN_LENGTH]; | |
| WCHAR UserName[USERNAME_LENGTH+1]; | |
| LARGE_INTEGER ConnectTime; | |
| LARGE_INTEGER DisconnectTime; | |
| LARGE_INTEGER LastInputTime; | |
| LARGE_INTEGER LogonTime; | |
| LARGE_INTEGER CurrentTime; | |
| } WTSINFOW, *PWTSINFOW; | |
| typedef struct _WTSINFOA { | |
| WTS_CONNECTSTATE_CLASS State; | |
| DWORD SessionId; | |
| DWORD IncomingBytes; | |
| DWORD OutgoingBytes; | |
| DWORD IncomingFrames; | |
| DWORD OutgoingFrames; | |
| DWORD IncomingCompressedBytes; | |
| DWORD OutgoingCompressedBytes; | |
| CHAR WinStationName[WINSTATIONNAME_LENGTH]; | |
| CHAR Domain[DOMAIN_LENGTH]; | |
| CHAR UserName[USERNAME_LENGTH+1]; | |
| LARGE_INTEGER ConnectTime; | |
| LARGE_INTEGER DisconnectTime; | |
| LARGE_INTEGER LastInputTime; | |
| LARGE_INTEGER LogonTime; | |
| LARGE_INTEGER CurrentTime; | |
| } WTSINFOA, *PWTSINFOA; | |
| __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, | |
| PSTR pPassword, | |
| WINBOOL bWait | |
| ); | |
| WINBOOL WINAPI WTSConnectSessionW( | |
| ULONG LogonId, | |
| ULONG TargetLogonId, | |
| PWSTR pPassword, | |
| WINBOOL bWait | |
| ); | |
| WINBOOL WTSRegisterSessionNotificationEx( | |
| HANDLE hServer, | |
| HWND hWnd, | |
| DWORD dwFlags | |
| ); | |
| WINBOOL WINAPI WTSStartRemoteControlSessionA( | |
| LPSTR pTargetServerName, | |
| ULONG TargetLogonId, | |
| BYTE HotkeyVk, | |
| USHORT HotkeyModifiers | |
| ); | |
| WINBOOL WINAPI WTSStartRemoteControlSessionW( | |
| LPWSTR pTargetServerName, | |
| ULONG TargetLogonId, | |
| BYTE HotkeyVk, | |
| USHORT HotkeyModifiers | |
| ); | |
| #define WTSStartRemoteControlSession __MINGW_NAME_AW(WTSStartRemoteControlSession) | |
| #define WTSConnectSession __MINGW_NAME_AW(WTSConnectSession) | |
| WINBOOL WINAPI WTSStopRemoteControlSession( | |
| ULONG LogonId | |
| ); | |
| WINBOOL WINAPI WTSUnRegisterSessionNotificationEx( | |
| HANDLE hServer, | |
| 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, | |
| DWORD flags | |
| ); | |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ | |
| #if (_WIN32_WINNT >= 0x0601) | |
| typedef struct _WTS_SESSION_INFO_1A { | |
| DWORD ExecEnvId; | |
| WTS_CONNECTSTATE_CLASS State; | |
| DWORD SessionId; | |
| LPSTR pSessionName; | |
| LPSTR pHostName; | |
| LPSTR pUserName; | |
| LPSTR pDomainName; | |
| LPSTR pFarmName; | |
| } WTS_SESSION_INFO_1A, *PWTS_SESSION_INFO_1A; | |
| typedef struct _WTS_SESSION_INFO_1W { | |
| DWORD ExecEnvId; | |
| WTS_CONNECTSTATE_CLASS State; | |
| DWORD SessionId; | |
| LPWSTR pSessionName; | |
| LPWSTR pHostName; | |
| LPWSTR pUserName; | |
| LPWSTR pDomainName; | |
| LPWSTR pFarmName; | |
| } WTS_SESSION_INFO_1W, * PWTS_SESSION_INFO_1W; | |
| #define WTS_SESSION_INFO_1 __MINGW_NAME_AW(WTS_SESSION_INFO_1) | |
| #define PWTS_SESSION_INFO_1 __MINGW_NAME_AW(PWTS_SESSION_INFO_1) | |
| WINBOOL WINAPI WTSEnumerateSessionsExA(HANDLE hServer,DWORD* pLevel,DWORD Filter,PWTS_SESSION_INFO_1A* ppSessionInfo,DWORD* pCount); | |
| WINBOOL WINAPI WTSEnumerateSessionsExW(HANDLE hServer,DWORD* pLevel,DWORD Filter,PWTS_SESSION_INFO_1W* ppSessionInfo,DWORD* pCount); | |
| #define WTSEnumerateSessionsEx __MINGW_NAME_AW(WTSEnumerateSessionsEx) | |
| typedef enum _WTS_TYPE_CLASS { | |
| WTSTypeProcessInfoLevel0, | |
| WTSTypeProcessInfoLevel1, | |
| WTSTypeSessionInfoLevel1 | |
| } WTS_TYPE_CLASS; | |
| WINBOOL WINAPI WTSFreeMemoryExA(WTS_TYPE_CLASS WTSTypeClass,PVOID pMemory,ULONG NumberOfEntries); | |
| WINBOOL WINAPI WTSFreeMemoryExW(WTS_TYPE_CLASS WTSTypeClass,PVOID pMemory,ULONG NumberOfEntries); | |
| #define WTSFreeMemoryEx __MINGW_NAME_AW(WTSFreeMemoryEx) | |
| #endif /*(_WIN32_WINNT >= 0x0601)*/ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif |