mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-23 09:54:39 +08:00
1906d341c2
Required for chromium Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com> Signed-off-by: LIU Hao <lh_mouse@126.com>
639 lines
22 KiB
C
639 lines
22 KiB
C
/**
|
|
* 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
|