| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the w64 mingw-runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _INC_WTSAPI |
| #define _INC_WTSAPI |
| |
| #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) |
| |
| #ifndef IDTIMEOUT |
| #define IDTIMEOUT 32000 |
| #endif |
| #ifndef IDASYNC |
| #define IDASYNC 32001 |
| #endif |
| |
| #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 |
| |
| 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; |
| |
| #ifdef UNICODE |
| #define WTS_SERVER_INFO WTS_SERVER_INFOW |
| #define PWTS_SERVER_INFO PWTS_SERVER_INFOW |
| #else |
| #define WTS_SERVER_INFO WTS_SERVER_INFOA |
| #define PWTS_SERVER_INFO PWTS_SERVER_INFOA |
| #endif |
| |
| 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 |
| |
| 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; |
| |
| #ifdef UNICODE |
| #define WTS_PROCESS_INFO WTS_PROCESS_INFOW |
| #define PWTS_PROCESS_INFO PWTS_PROCESS_INFOW |
| #else |
| #define WTS_PROCESS_INFO WTS_PROCESS_INFOA |
| #define PWTS_PROCESS_INFO PWTS_PROCESS_INFOA |
| #endif |
| |
| #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 |
| } WTS_INFO_CLASS; |
| |
| 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 |
| } WTS_CONFIG_CLASS; |
| |
| #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 |
| |
| typedef enum _WTS_VIRTUAL_CLASS { |
| WTSVirtualClientData,WTSVirtualFileHandle |
| } WTS_VIRTUAL_CLASS; |
| |
| #ifdef UNICODE |
| #define WTSEnumerateServers WTSEnumerateServersW |
| #define WTSOpenServer WTSOpenServerW |
| #define WTSEnumerateSessions WTSEnumerateSessionsW |
| #define WTSEnumerateProcesses WTSEnumerateProcessesW |
| #define WTSQuerySessionInformation WTSQuerySessionInformationW |
| #define WTSQueryUserConfig WTSQueryUserConfigW |
| #define WTSSetUserConfig WTSSetUserConfigW |
| #define WTSSendMessage WTSSendMessageW |
| #else |
| #define WTSEnumerateServers WTSEnumerateServersA |
| #define WTSOpenServer WTSOpenServerA |
| #define WTSEnumerateSessions WTSEnumerateSessionsA |
| #define WTSEnumerateProcesses WTSEnumerateProcessesA |
| #define WTSQuerySessionInformation WTSQuerySessionInformationA |
| #define WTSQueryUserConfig WTSQueryUserConfigA |
| #define WTSSetUserConfig WTSSetUserConfigA |
| #define WTSSendMessage WTSSendMessageA |
| #endif |
| |
| 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); |
| 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); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif |