Headers diff for wtsapi32.dll between 6.0.6001.18000-Windows 6.0 and 6.1.7600.16385-Windows 7.0 versions



 wtsapi32.h (6.0.6001.18000-Windows 6.0)   wtsapi32.h (6.1.7600.16385-Windows 7.0) 
skipping to change at line 39 skipping to change at line 39
#define WTS_CURRENT_SERVER ((HANDLE)NULL) #define WTS_CURRENT_SERVER ((HANDLE)NULL)
#define WTS_CURRENT_SERVER_HANDLE ((HANDLE)NULL) #define WTS_CURRENT_SERVER_HANDLE ((HANDLE)NULL)
#define WTS_CURRENT_SERVER_NAME (NULL) #define WTS_CURRENT_SERVER_NAME (NULL)
/* /*
* Specifies the current session (SessionId) * Specifies the current session (SessionId)
*/ */
#define WTS_CURRENT_SESSION ((DWORD)-1) #define WTS_CURRENT_SESSION ((DWORD)-1)
/* /*
* Specifies any-session (SessionId)
*/
#define WTS_ANY_SESSION ((DWORD)-2)
/*
* Possible pResponse values from WTSSendMessage() * Possible pResponse values from WTSSendMessage()
*/ */
#ifndef IDTIMEOUT #ifndef IDTIMEOUT
#define IDTIMEOUT 32000 #define IDTIMEOUT 32000
#endif #endif
#ifndef IDASYNC #ifndef IDASYNC
#define IDASYNC 32001 #define IDASYNC 32001
#endif #endif
#ifndef __HYDRIX_H__
#define USERNAME_LENGTH 20
#define CLIENTNAME_LENGTH 20
#define CLIENTADDRESS_LENGTH 30
#endif
/* /*
* Shutdown flags * Shutdown flags
*/ */
#define WTS_WSD_LOGOFF 0x00000001 // log off all users except #define WTS_WSD_LOGOFF 0x00000001 // log off all users except
// current user; deletes // current user; deletes
// WinStations (a reboot is // WinStations (a reboot is
// required to recreate the // required to recreate the
// WinStations) // WinStations)
#define WTS_WSD_SHUTDOWN 0x00000002 // shutdown system #define WTS_WSD_SHUTDOWN 0x00000002 // shutdown system
#define WTS_WSD_REBOOT 0x00000004 // shutdown and reboot #define WTS_WSD_REBOOT 0x00000004 // shutdown and reboot
#define WTS_WSD_POWEROFF 0x00000008 // shutdown and power off (on #define WTS_WSD_POWEROFF 0x00000008 // shutdown and power off (on
// machines that support power // machines that support power
// off through software) // off through software)
#define WTS_WSD_FASTREBOOT 0x00000010 // reboot without logging users #define WTS_WSD_FASTREBOOT 0x00000010 // reboot without logging users
// off or shutting down // off or shutting down
#define MAX_ELAPSED_TIME_LENGTH 15 #define MAX_ELAPSED_TIME_LENGTH 15
#define MAX_DATE_TIME_LENGTH 56 #define MAX_DATE_TIME_LENGTH 56
#define WINSTATIONNAME_LENGTH 32 #define WINSTATIONNAME_LENGTH 32
#define DOMAIN_LENGTH 17 #define DOMAIN_LENGTH 17
#define WTS_DRIVE_LENGTH 3
#define WTS_LISTENER_NAME_LENGTH 32
#define WTS_COMMENT_LENGTH 60
/*
* Flags for WTSCreateListener
*/
#define WTS_LISTENER_CREATE 0x00000001
#define WTS_LISTENER_UPDATE 0x00000010
/*********************************
* Listener access values
*********************************/
#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 | W
TS_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 | WT
S_SECURITY_RESET \
WTS_SECURITY_VIRTUAL_CHANNELS | W
TS_SECURITY_LOGOFF \
WTS_SECURITY_DISCONNECT)
#define WTS_SECURITY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | WTS_SE
CURITY_QUERY_INFORMATION | \
WTS_SECURITY_SET_INFORMATION | WT
S_SECURITY_RESET | \
WTS_SECURITY_VIRTUAL_CHANNELS |
WTS_SECURITY_REMOTE_CONTROL | \
WTS_SECURITY_LOGON |
\
WTS_SECURITY_MESSAGE |
\
WTS_SECURITY_CONNECT | WTS_SECURI
TY_DISCONNECT)
/*=================================================================== /*===================================================================
== WTS_CONNECTSTATE_CLASS - Session connect state == WTS_CONNECTSTATE_CLASS - Session connect state
=====================================================================*/ =====================================================================*/
typedef enum _WTS_CONNECTSTATE_CLASS { typedef enum _WTS_CONNECTSTATE_CLASS {
WTSActive, // User logged on to WinStation WTSActive, // User logged on to WinStation
WTSConnected, // WinStation connected to client WTSConnected, // WinStation connected to client
WTSConnectQuery, // In the process of connecting to client WTSConnectQuery, // In the process of connecting to client
WTSShadow, // Shadowing another WinStation WTSShadow, // Shadowing another WinStation
WTSDisconnected, // WinStation logged on without client WTSDisconnected, // WinStation logged on without client
skipping to change at line 167 skipping to change at line 218
WTS_CONNECTSTATE_CLASS State; // connection state (see enum) WTS_CONNECTSTATE_CLASS State; // connection state (see enum)
} WTS_SESSION_INFOW, * PWTS_SESSION_INFOW; } WTS_SESSION_INFOW, * PWTS_SESSION_INFOW;
typedef struct _WTS_SESSION_INFOA { typedef struct _WTS_SESSION_INFOA {
DWORD SessionId; // session id DWORD SessionId; // session id
LPSTR pWinStationName; // name of WinStation this session is LPSTR pWinStationName; // name of WinStation this session is
// connected to // connected to
WTS_CONNECTSTATE_CLASS State; // connection state (see enum) WTS_CONNECTSTATE_CLASS State; // connection state (see enum)
} WTS_SESSION_INFOA, * PWTS_SESSION_INFOA; } WTS_SESSION_INFOA, * PWTS_SESSION_INFOA;
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;
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;
#ifdef UNICODE #ifdef UNICODE
#define WTS_SESSION_INFO WTS_SESSION_INFOW #define WTS_SESSION_INFO WTS_SESSION_INFOW
#define PWTS_SESSION_INFO PWTS_SESSION_INFOW #define PWTS_SESSION_INFO PWTS_SESSION_INFOW
#define WTS_SESSION_INFO_1 WTS_SESSION_INFO_1W
#define PWTS_SESSION_INFO_1 PWTS_SESSION_INFO_1W
#else #else
#define WTS_SESSION_INFO WTS_SESSION_INFOA #define WTS_SESSION_INFO WTS_SESSION_INFOA
#define PWTS_SESSION_INFO PWTS_SESSION_INFOA #define PWTS_SESSION_INFO PWTS_SESSION_INFOA
#define WTS_SESSION_INFO_1 WTS_SESSION_INFO_1A
#define PWTS_SESSION_INFO_1 PWTS_SESSION_INFO_1A
#endif #endif
/*===================================================================== /*=====================================================================
== WTS_PROCESS_INFO - returned by WTSEnumerateProcesses (version 1) == WTS_PROCESS_INFO - returned by WTSEnumerateProcesses (version 1)
=====================================================================*/ =====================================================================*/
/* /*
* WTSEnumerateProcesses() also returns data similar to * WTSEnumerateProcesses() also returns data similar to
* WTSEnumerateServers(). It returns two variables: pProcessInfo and * WTSEnumerateServers(). It returns two variables: pProcessInfo and
* Count. The latter is the number of WTS_PROCESS_INFO structures * Count. The latter is the number of WTS_PROCESS_INFO structures
skipping to change at line 261 skipping to change at line 338
WTSClientHardwareId, WTSClientHardwareId,
WTSClientAddress, WTSClientAddress,
WTSClientDisplay, WTSClientDisplay,
WTSClientProtocolType, WTSClientProtocolType,
WTSIdleTime, WTSIdleTime,
WTSLogonTime, WTSLogonTime,
WTSIncomingBytes, WTSIncomingBytes,
WTSOutgoingBytes, WTSOutgoingBytes,
WTSIncomingFrames, WTSIncomingFrames,
WTSOutgoingFrames, WTSOutgoingFrames,
WTSClientInfo,
WTSSessionInfo,
WTSSessionInfoEx,
WTSConfigInfo,
WTSValidationInfo, // Info Class value used to fetch Validation Informatio
n through the WTSQuerySessionInformation
WTSSessionAddressV4,
WTSIsRemoteSession
} WTS_INFO_CLASS; } WTS_INFO_CLASS;
/*===================================================================== /*=====================================================================
== WTS Config Information
=====================================================================*/
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;
/*=====================================================================
== WTS Session Information
=====================================================================*/
typedef struct _WTSINFOW {
WTS_CONNECTSTATE_CLASS State; // connection state (see enum)
DWORD SessionId; // session id
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];// name of WinStation this session is
// connected to
LARGE_INTEGER ConnectTime;
LARGE_INTEGER DisconnectTime;
LARGE_INTEGER LastInputTime;
LARGE_INTEGER LogonTime;
LARGE_INTEGER CurrentTime;
} WTSINFOW, * PWTSINFOW;
typedef struct _WTSINFOA {
WTS_CONNECTSTATE_CLASS State; // connection state (see enum)
DWORD SessionId; // session id
DWORD IncomingBytes;
DWORD OutgoingBytes;
DWORD IncomingFrames;
DWORD OutgoingFrames;
DWORD IncomingCompressedBytes;
DWORD OutgoingCompressedBy;
CHAR WinStationName[WINSTATIONNAME_LENGTH];
CHAR Domain[DOMAIN_LENGTH];
CHAR UserName[USERNAME_LENGTH+1];// name of WinStation this session is
// connected to
LARGE_INTEGER ConnectTime;
LARGE_INTEGER DisconnectTime;
LARGE_INTEGER LastInputTime;
LARGE_INTEGER LogonTime;
LARGE_INTEGER CurrentTime;
} WTSINFOA, * PWTSINFOA;
/*=====================================================================
== WTS Extended Session State Flags
=====================================================================*/
#define WTS_SESSIONSTATE_UNKNOWN 0xFFFFFFFF
#define WTS_SESSIONSTATE_LOCK 0x00000000
#define WTS_SESSIONSTATE_UNLOCK 0x00000001
/*=====================================================================
== WTS Extended Session Information
=====================================================================*/
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;
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;
typedef struct _WTSINFOEXW {
DWORD Level;
WTSINFOEX_LEVEL_W Data;
} WTSINFOEXW, *PWTSINFOEXW;
typedef struct _WTSINFOEXA {
DWORD Level;
WTSINFOEX_LEVEL_A Data;
} WTSINFOEXA, *PWTSINFOEXA;
/*=====================================================================
== WTS Client Information
=====================================================================*/
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; // security level of encryption pd
ULONG ClientAddressFamily;
USHORT ClientAddress[ CLIENTADDRESS_LENGTH + 1 ];
USHORT HRes;
USHORT VRes;
USHORT ColorDepth;
WCHAR ClientDirectory[ MAX_PATH + 1 ];
ULONG ClientBuildNumber;
ULONG ClientHardwareId; // client software serial number
USHORT ClientProductId; // client software product id
USHORT OutBufCountHost; // number of outbufs on host
USHORT OutBufCountClient; // number of outbufs on client
USHORT OutBufLength; // length of outbufs in bytes
WCHAR DeviceId[ MAX_PATH + 1];
} WTSCLIENTW, * PWTSCLIENTW;
/*=====================================================================
== WTS Client Information
=====================================================================*/
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; // security level of encryption pd
ULONG ClientAddressFamily;
USHORT ClientAddress[ CLIENTADDRESS_LENGTH + 1 ];
USHORT HRes;
USHORT VRes;
USHORT ColorDepth;
CHAR ClientDirectory[ MAX_PATH + 1 ];
ULONG ClientBuildNumber;
ULONG ClientHardwareId; // client software serial number
USHORT ClientProductId; // client software product id
USHORT OutBufCountHost; // number of outbufs on host
USHORT OutBufCountClient; // number of outbufs on client
USHORT OutBufLength; // length of outbufs in bytes
CHAR DeviceId[ MAX_PATH + 1];
} WTSCLIENTA, * PWTSCLIENTA;
/*=====================================================================
== WTS License Validation Information - Product Information
=====================================================================*/
#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;
/*=====================================================================
WTS License Validation Information
This structure will be returned from WTSQuerySessionInformation when the us
er
queries for license validation information.
=====================================================================*/
#define VALIDATIONINFORMATION_LICENSE_LENGTH 16384 //16 Kb
#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;
#ifdef UNICODE
#define WTSCONFIGINFO WTSCONFIGINFOW
#define PWTSCONFIGINFO PWTSCONFIGINFOW
#define PRODUCT_INFO PRODUCT_INFOW
#define WTS_VALIDATION_INFORMATION WTS_VALIDATION_INFORMATIONW
#define PWTS_VALIDATION_INFORMATION PWTS_VALIDATION_INFORMATIONW
#define WTSINFO WTSINFOW
#define PWTSINFO PWTSINFOW
#define WTSINFOEX WTSINFOEXW
#define PWTSINFOEX PWTSINFOEXW
#define WTSINFOEX_LEVEL WTSINFOEX_LEVEL_W
#define PWTSINFOEX_LEVEL PWTSINFOEX_LEVEL_W
#define WTSINFOEX_LEVEL1 WTSINFOEX_LEVEL1_W
#define PWTSINFOEX_LEVEL1 PWTSINFOEX_LEVEL1_W
#define WTSCLIENT WTSCLIENTW
#define PWTSCLIENT PWTSCLIENTW
#else
#define WTSCONFIGINFO WTSCONFIGINFOA
#define PWTSCONFIGINFO PWTSCONFIGINFOA
#define PRODUCT_INFO PRODUCT_INFOA
#define WTS_VALIDATION_INFORMATION WTS_VALIDATION_INFORMATIONA
#define PWTS_VALIDATION_INFORMATION PWTS_VALIDATION_INFORMATIONA
#define WTSINFO WTSINFOA
#define PWTSINFO PWTSINFOA
#define WTSINFOEX WTSINFOEXA
#define PWTSINFOEX PWTSINFOEXA
#define WTSINFOEX_LEVEL WTSINFOEX_LEVEL_A
#define PWTSINFOEX_LEVEL PWTSINFOEX_LEVEL_A
#define WTSINFOEX_LEVEL1 WTSINFOEX_LEVEL1_A
#define PWTSINFOEX_LEVEL1 PWTSINFOEX_LEVEL1_A
#define WTSCLIENT WTSCLIENTA
#define PWTSCLIENT PWTSCLIENTA
#endif
/*=====================================================================
== WTSQuerySessionInformation - (WTSClientAddress) == WTSQuerySessionInformation - (WTSClientAddress)
=====================================================================*/ =====================================================================*/
typedef struct _WTS_CLIENT_ADDRESS { typedef struct _WTS_CLIENT_ADDRESS {
DWORD AddressFamily; // AF_INET, AF_INET6, AF_IPX, AF_NETBIOS, AF_UNSPEC DWORD AddressFamily; // AF_INET, AF_INET6, AF_IPX, AF_NETBIOS, AF_UNSPEC
BYTE Address[20]; // client network address BYTE Address[20]; // client network address
} WTS_CLIENT_ADDRESS, * PWTS_CLIENT_ADDRESS; } WTS_CLIENT_ADDRESS, * PWTS_CLIENT_ADDRESS;
/*===================================================================== /*=====================================================================
== WTSQuerySessionInformation - (WTSClientDisplay) == WTSQuerySessionInformation - (WTSClientDisplay)
skipping to change at line 316 skipping to change at line 676
WTSUserConfigModemCallbackPhoneNumber, // string returned/expected WTSUserConfigModemCallbackPhoneNumber, // string returned/expected
//Shadow settings //Shadow settings
WTSUserConfigShadowingSettings, //DWORD returned/expected WTSUserConfigShadowingSettings, //DWORD returned/expected
//User Profile settings //User Profile settings
WTSUserConfigTerminalServerProfilePath, // string returned/expected WTSUserConfigTerminalServerProfilePath, // string returned/expected
//Terminal Server home directory //Terminal Server home directory
WTSUserConfigTerminalServerHomeDir, // string returned/expected WTSUserConfigTerminalServerHomeDir, // string returned/expected
WTSUserConfigTerminalServerHomeDirDrive, // string returned/expected WTSUserConfigTerminalServerHomeDirDrive, // string returned/expected
WTSUserConfigfTerminalServerRemoteHomeDir, // DWORD 0:LOCAL 1:REMOTE WTSUserConfigfTerminalServerRemoteHomeDir, // DWORD 0:LOCAL 1:REMOTE
WTSUserConfigUser, // returns WTSUSERCONFIG struct
} WTS_CONFIG_CLASS; } 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;
#ifdef UNICODE
#define WTSUSERCONFIG WTSUSERCONFIGW
#define PWTSUSERCONFIG PWTSUSERCONFIGW
#else
#define WTSUSERCONFIG WTSUSERCONFIGA
#define PWTSUSERCONFIG PWTSUSERCONFIGA
#endif /* UNICODE */
/*===================================================================== /*=====================================================================
== WTS_EVENT - Event flags for WTSWaitSystemEvent == WTS_EVENT - Event flags for WTSWaitSystemEvent
=====================================================================*/ =====================================================================*/
#define WTS_EVENT_NONE 0x00000000 // return no event #define WTS_EVENT_NONE 0x00000000 // return no event
#define WTS_EVENT_CREATE 0x00000001 // new WinStation created #define WTS_EVENT_CREATE 0x00000001 // new WinStation created
#define WTS_EVENT_DELETE 0x00000002 // existing WinStation deleted #define WTS_EVENT_DELETE 0x00000002 // existing WinStation deleted
#define WTS_EVENT_RENAME 0x00000004 // existing WinStation renamed #define WTS_EVENT_RENAME 0x00000004 // existing WinStation renamed
#define WTS_EVENT_CONNECT 0x00000008 // WinStation connect to client #define WTS_EVENT_CONNECT 0x00000008 // WinStation connect to client
#define WTS_EVENT_DISCONNECT 0x00000010 // WinStation logged on without #define WTS_EVENT_DISCONNECT 0x00000010 // WinStation logged on without
skipping to change at line 339 skipping to change at line 754
#define WTS_EVENT_LOGON 0x00000020 // user logged on to existing #define WTS_EVENT_LOGON 0x00000020 // user logged on to existing
// WinStation // WinStation
#define WTS_EVENT_LOGOFF 0x00000040 // user logged off from #define WTS_EVENT_LOGOFF 0x00000040 // user logged off from
// existing WinStation // existing WinStation
#define WTS_EVENT_STATECHANGE 0x00000080 // WinStation state change #define WTS_EVENT_STATECHANGE 0x00000080 // WinStation state change
#define WTS_EVENT_LICENSE 0x00000100 // license state change #define WTS_EVENT_LICENSE 0x00000100 // license state change
#define WTS_EVENT_ALL 0x7fffffff // wait for all event types #define WTS_EVENT_ALL 0x7fffffff // wait for all event types
#define WTS_EVENT_FLUSH 0x80000000 // unblock all waiters #define WTS_EVENT_FLUSH 0x80000000 // unblock all waiters
/*===================================================================== /*=====================================================================
== Flags for HotkeyModifiers in WTSStartRemoteControlSession
=====================================================================*/
#define REMOTECONTROL_KBDSHIFT_HOTKEY 0x1 // Shift key
#define REMOTECONTROL_KBDCTRL_HOTKEY 0x2 // Ctrl key
#define REMOTECONTROL_KBDALT_HOTKEY 0x4 // Alt key
/*=====================================================================
== WTS_VIRTUAL_CLASS - WTSVirtualChannelQuery == WTS_VIRTUAL_CLASS - WTSVirtualChannelQuery
=====================================================================*/ =====================================================================*/
typedef enum _WTS_VIRTUAL_CLASS { typedef enum _WTS_VIRTUAL_CLASS {
WTSVirtualClientData, // Virtual channel client module data WTSVirtualClientData, // Virtual channel client module data
// (C2H data) // (C2H data)
WTSVirtualFileHandle WTSVirtualFileHandle
} WTS_VIRTUAL_CLASS; } WTS_VIRTUAL_CLASS;
/*===================================================================== /*=====================================================================
== WTSQuerySessionInformation - (WTSSessionAddress)
=====================================================================*/
typedef struct _WTS_SESSION_ADDRESS {
DWORD AddressFamily; // AF_INET only.
BYTE Address[20]; // client network address
} WTS_SESSION_ADDRESS, * PWTS_SESSION_ADDRESS;
/*=====================================================================
== Windows Terminal Server public APIs == Windows Terminal Server public APIs
=====================================================================*/ =====================================================================*/
BOOL WINAPI
WTSStopRemoteControlSession(
IN ULONG LogonId
);
BOOL WINAPI
WTSStartRemoteControlSessionW(
__in LPWSTR pTargetServerName,
IN ULONG TargetLogonId,
IN BYTE HotkeyVk,
IN USHORT HotkeyModifiers
);
BOOL WINAPI
WTSStartRemoteControlSessionA(
__in LPSTR pTargetServerName,
IN ULONG TargetLogonId,
IN BYTE HotkeyVk,
IN USHORT HotkeyModifiers
);
#ifdef UNICODE
#define WTSStartRemoteControlSession WTSStartRemoteControlSessionW
#else
#define WTSStartRemoteControlSession WTSStartRemoteControlSessionA
#endif /* UNICODE */
BOOL
WINAPI
WTSConnectSessionA(
IN ULONG LogonId,
IN ULONG TargetLogonId,
__in PSTR pPassword,
IN BOOL bWait
);
BOOL
WINAPI
WTSConnectSessionW(
IN ULONG LogonId,
IN ULONG TargetLogonId,
__in PWSTR pPassword,
IN BOOL bWait
);
#ifdef UNICODE
#define WTSConnectSession WTSConnectSessionW
#else
#define WTSConnectSession WTSConnectSessionA
#endif
BOOL BOOL
WINAPI WINAPI
WTSEnumerateServersW( WTSEnumerateServersW(
__in LPWSTR pDomainName, __in LPWSTR pDomainName,
IN DWORD Reserved, IN DWORD Reserved,
IN DWORD Version, IN DWORD Version,
__deref_out_ecount(*pCount) PWTS_SERVER_INFOW * ppServerInfo, __deref_out_ecount(*pCount) PWTS_SERVER_INFOW * ppServerInfo,
__out DWORD * pCount __out DWORD * pCount
); );
skipping to change at line 391 skipping to change at line 874
WTSOpenServerW( WTSOpenServerW(
__in LPWSTR pServerName __in LPWSTR pServerName
); );
HANDLE HANDLE
WINAPI WINAPI
WTSOpenServerA( WTSOpenServerA(
__in LPSTR pServerName __in LPSTR pServerName
); );
HANDLE
WINAPI
WTSOpenServerExW(
__in LPWSTR pServerName
);
HANDLE
WINAPI
WTSOpenServerExA(
__in LPSTR pServerName
);
#ifdef UNICODE #ifdef UNICODE
#define WTSOpenServer WTSOpenServerW #define WTSOpenServer WTSOpenServerW
#define WTSOpenServerEx WTSOpenServerExW
#else #else
#define WTSOpenServer WTSOpenServerA #define WTSOpenServer WTSOpenServerA
#define WTSOpenServerEx WTSOpenServerExA
#endif #endif
/*------------------------------------------------*/ /*------------------------------------------------*/
VOID VOID
WINAPI WINAPI
WTSCloseServer( WTSCloseServer(
IN HANDLE hServer IN HANDLE hServer
); );
skipping to change at line 427 skipping to change at line 924
BOOL BOOL
WINAPI WINAPI
WTSEnumerateSessionsA( WTSEnumerateSessionsA(
IN HANDLE hServer, IN HANDLE hServer,
IN DWORD Reserved, IN DWORD Reserved,
IN DWORD Version, IN DWORD Version,
__deref_out_ecount(*pCount) PWTS_SESSION_INFOA * ppSessionInfo, __deref_out_ecount(*pCount) PWTS_SESSION_INFOA * ppSessionInfo,
__out DWORD * pCount __out DWORD * pCount
); );
BOOL
WINAPI
WTSEnumerateSessionsExW(
__in HANDLE hServer,
__inout DWORD *pLevel,
__in DWORD Filter,
__deref_out_ecount(*pCount) PWTS_SESSION_INFO_1W * ppSessionInfo,
__out DWORD * pCount );
BOOL
WINAPI
WTSEnumerateSessionsExA(
__in HANDLE hServer,
__inout DWORD *pLevel,
__in DWORD Filter,
__deref_out_ecount(*pCount) PWTS_SESSION_INFO_1A * ppSessionInfo,
__out DWORD * pCount );
#ifdef UNICODE #ifdef UNICODE
#define WTSEnumerateSessions WTSEnumerateSessionsW #define WTSEnumerateSessions WTSEnumerateSessionsW
#define WTSEnumerateSessionsEx WTSEnumerateSessionsExW
#else #else
#define WTSEnumerateSessions WTSEnumerateSessionsA #define WTSEnumerateSessions WTSEnumerateSessionsA
#define WTSEnumerateSessionsEx WTSEnumerateSessionsExA
#endif #endif
/*------------------------------------------------*/ /*------------------------------------------------*/
BOOL BOOL
WINAPI WINAPI
WTSEnumerateProcessesW( WTSEnumerateProcessesW(
IN HANDLE hServer, IN HANDLE hServer,
IN DWORD Reserved, IN DWORD Reserved,
IN DWORD Version, IN DWORD Version,
skipping to change at line 642 skipping to change at line 1159
/*------------------------------------------------*/ /*------------------------------------------------*/
HANDLE HANDLE
WINAPI WINAPI
WTSVirtualChannelOpen( WTSVirtualChannelOpen(
IN HANDLE hServer, IN HANDLE hServer,
IN DWORD SessionId, IN DWORD SessionId,
__in LPSTR pVirtualName /* ascii name */ __in LPSTR pVirtualName /* ascii name */
); );
#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001 // dynamic channel
#define WTS_CHANNEL_OPTION_DYNAMIC_PRI_LOW 0x00000000 // priorities
#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(
IN DWORD SessionId,
__in LPSTR pVirtualName, /* ascii name */
IN DWORD flags
);
BOOL BOOL
WINAPI WINAPI
WTSVirtualChannelClose( WTSVirtualChannelClose(
IN HANDLE hChannelHandle IN HANDLE hChannelHandle
); );
BOOL BOOL
WINAPI WINAPI
WTSVirtualChannelRead( WTSVirtualChannelRead(
IN HANDLE hChannelHandle, IN HANDLE hChannelHandle,
skipping to change at line 701 skipping to change at line 1233
WINAPI WINAPI
WTSFreeMemory( WTSFreeMemory(
IN PVOID pMemory IN PVOID pMemory
); );
/* Flags for Console Notification */ /* Flags for Console Notification */
#define NOTIFY_FOR_ALL_SESSIONS 1 #define NOTIFY_FOR_ALL_SESSIONS 1
#define NOTIFY_FOR_THIS_SESSION 0 #define NOTIFY_FOR_THIS_SESSION 0
BOOL WINAPI BOOL
WINAPI
WTSRegisterSessionNotification( WTSRegisterSessionNotification(
HWND hWnd, HWND hWnd,
DWORD dwFlags DWORD dwFlags
); );
BOOL WINAPI BOOL
WINAPI
WTSUnRegisterSessionNotification( WTSUnRegisterSessionNotification(
HWND hWnd HWND hWnd
); );
BOOL WINAPI BOOL
WINAPI
WTSRegisterSessionNotificationEx( WTSRegisterSessionNotificationEx(
IN HANDLE hServer, IN HANDLE hServer,
IN HWND hWnd, IN HWND hWnd,
IN DWORD dwFlags IN DWORD dwFlags
); );
BOOL WINAPI BOOL
WINAPI
WTSUnRegisterSessionNotificationEx( WTSUnRegisterSessionNotificationEx(
IN HANDLE hServer, IN HANDLE hServer,
IN HWND hWnd IN HWND hWnd
); );
BOOL WINAPI BOOL
WINAPI
WTSQueryUserToken( WTSQueryUserToken(
ULONG SessionId, ULONG SessionId,
PHANDLE phToken PHANDLE phToken
); );
#define WTS_PROCESS_INFO_LEVEL_0 0
#define WTS_PROCESS_INFO_LEVEL_1 1
/*
== WTS_PROCESS_INFO_EX - returned by WTSEnumerateProcessesEX
*/
typedef struct _WTS_PROCESS_INFO_EXW {
DWORD SessionId;
DWORD ProcessId;
LPWSTR pProcessName;
PSID pUserSid;
DWORD NumberOfThreads;
DWORD HandleCount;
DWORD PagefileUsage;
DWORD PeakPagefileUsage;
DWORD WorkingSetSize;
DWORD PeakWorkingSetSize;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
} WTS_PROCESS_INFO_EXW, * PWTS_PROCESS_INFO_EXW;
typedef struct _WTS_PROCESS_INFO_EXA {
DWORD SessionId;
DWORD ProcessId;
LPSTR pProcessName;
PSID pUserSid;
DWORD NumberOfThreads;
DWORD HandleCount;
DWORD PagefileUsage;
DWORD PeakPagefileUsage;
DWORD WorkingSetSize;
DWORD PeakWorkingSetSize;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
} WTS_PROCESS_INFO_EXA, * PWTS_PROCESS_INFO_EXA;
#ifdef UNICODE
#define WTS_PROCESS_INFO_EX WTS_PROCESS_INFO_EXW
#define PWTS_PROCESS_INFO_EX PWTS_PROCESS_INFO_EXW
#else
#define WTS_PROCESS_INFO_EX WTS_PROCESS_INFO_EXA
#define PWTS_PROCESS_INFO_EX PWTS_PROCESS_INFO_EXA
#endif
/*------------------------------------------------*/
typedef enum _WTS_TYPE_CLASS {
WTSTypeProcessInfoLevel0,
WTSTypeProcessInfoLevel1,
WTSTypeSessionInfoLevel1,
} WTS_TYPE_CLASS;
BOOL WINAPI
WTSFreeMemoryExW(
__in WTS_TYPE_CLASS WTSTypeClass,
__in PVOID pMemory,
__in ULONG NumberOfEntries
);
BOOL WINAPI
WTSFreeMemoryExA(
__in WTS_TYPE_CLASS WTSTypeClass,
__in PVOID pMemory,
__in ULONG NumberOfEntries
);
#ifdef UNICODE
#define WTSFreeMemoryEx WTSFreeMemoryExW
#else
#define WTSFreeMemoryEx WTSFreeMemoryExA
#endif
/*------------------------------------------------*/
BOOL WINAPI
WTSEnumerateProcessesExW
(
__in HANDLE hServer,
__inout DWORD *pLevel,
__in DWORD SessionId,
__out LPWSTR *ppProcessInfo,
__out DWORD * pCount
);
BOOL WINAPI
WTSEnumerateProcessesExA
(
__in HANDLE hServer,
__inout DWORD *pLevel,
__in DWORD SessionId,
__out LPSTR *ppProcessInfo,
__out DWORD * pCount
);
#ifdef UNICODE
#define WTSEnumerateProcessesEx WTSEnumerateProcessesExW
#else
#define WTSEnumerateProcessesEx WTSEnumerateProcessesExA
#endif
/*------------------------------------------------*/
// Listener management APIs
typedef WCHAR WTSLISTENERNAMEW[WTS_LISTENER_NAME_LENGTH + 1 ];
typedef WTSLISTENERNAMEW *PWTSLISTENERNAMEW;
typedef CHAR WTSLISTENERNAMEA[WTS_LISTENER_NAME_LENGTH + 1 ];
typedef WTSLISTENERNAMEA *PWTSLISTENERNAMEA;
#ifdef UNICODE
#define WTSLISTENERNAME WTSLISTENERNAMEW
#define PWTSLISTENERNAME PWTSLISTENERNAMEW
#else
#define WTSLISTENERNAME WTSLISTENERNAMEA
#define PWTSLISTENERNAME PWTSLISTENERNAMEW
#endif
BOOL WINAPI
WTSEnumerateListenersW (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__out_ecount_opt(*pCount) PWTSLISTENERNAMEW pListeners,
__inout DWORD* pCount
);
BOOL WINAPI
WTSEnumerateListenersA (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__out_ecount_opt(*pCount) PWTSLISTENERNAMEA pListeners,
__inout DWORD* pCount
);
#ifdef UNICODE
#define WTSEnumerateListeners WTSEnumerateListenersW
#else
#define WTSEnumerateListeners WTSEnumerateListenersA
#endif
/*------------------------------------------------*/
// Listener Config, used by WTSQueryListenerConfig and WTSCreateListener
typedef struct _WTSLISTENERCONFIGW{
ULONG version;
ULONG fEnableListener;
ULONG MaxConnectionCount;
ULONG fPromptForPassword;
ULONG fInheritColorDepth;
ULONG ColorDepth;
ULONG fInheritBrokenTimeoutSettings;
ULONG BrokenTimeoutSettings;
ULONG fDisablePrinterRedirection;
ULONG fDisableDriveRedirection;
ULONG fDisableComPortRedirection;
ULONG fDisableLPTPortRedirection;
ULONG fDisableClipboardRedirection;
ULONG fDisableAudioRedirection;
ULONG fDisablePNPRedirection;
ULONG fDisableDefaultMainClientPrinter;
ULONG LanAdapter;
ULONG PortNumber;
ULONG fInheritShadowSettings;
ULONG ShadowSettings;
ULONG TimeoutSettingsConnection;
ULONG TimeoutSettingsDisconnection;
ULONG TimeoutSettingsIdle;
ULONG SecurityLayer;
ULONG MinEncryptionLevel;
ULONG UserAuthentication;
WCHAR Comment[ WTS_COMMENT_LENGTH + 1 ];
WCHAR LogonUserName[USERNAME_LENGTH + 1 ];
WCHAR LogonDomain[DOMAIN_LENGTH + 1 ];
WCHAR WorkDirectory[ MAX_PATH + 1 ];
WCHAR InitialProgram[ MAX_PATH + 1 ];
} WTSLISTENERCONFIGW, *PWTSLISTENERCONFIGW;
typedef struct _WTSLISTENERCONFIGA{
ULONG version;
ULONG fEnableListener;
ULONG MaxConnectionCount;
ULONG fPromptForPassword;
ULONG fInheritColorDepth;
ULONG ColorDepth;
ULONG fInheritBrokenTimeoutSettings;
ULONG BrokenTimeoutSettings;
ULONG fDisablePrinterRedirection;
ULONG fDisableDriveRedirection;
ULONG fDisableComPortRedirection;
ULONG fDisableLPTPortRedirection;
ULONG fDisableClipboardRedirection;
ULONG fDisableAudioRedirection;
ULONG fDisablePNPRedirection;
ULONG fDisableDefaultMainClientPrinter;
ULONG LanAdapter;
ULONG PortNumber;
ULONG fInheritShadowSettings;
ULONG ShadowSettings;
ULONG TimeoutSettingsConnection;
ULONG TimeoutSettingsDisconnection;
ULONG TimeoutSettingsIdle;
ULONG SecurityLayer;
ULONG MinEncryptionLevel;
ULONG UserAuthentication;
CHAR Comment[ WTS_COMMENT_LENGTH + 1 ];
CHAR LogonUserName[USERNAME_LENGTH + 1 ];
CHAR LogonDomain[DOMAIN_LENGTH + 1 ];
CHAR WorkDirectory[ MAX_PATH + 1 ];
CHAR InitialProgram[ MAX_PATH + 1 ];
} WTSLISTENERCONFIGA, *PWTSLISTENERCONFIGA;
BOOL WINAPI WTSQueryListenerConfigW (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPWSTR pListenerName,
__out PWTSLISTENERCONFIGW pBuffer
);
BOOL WINAPI WTSQueryListenerConfigA (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPSTR pListenerName,
__out PWTSLISTENERCONFIGA pBuffer
);
BOOL WINAPI WTSCreateListenerW (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPWSTR pListenerName,
__in PWTSLISTENERCONFIGW pBuffer,
__in DWORD flag
);
BOOL WINAPI WTSCreateListenerA (
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPSTR pListenerName,
__in PWTSLISTENERCONFIGA pBuffer,
__in DWORD flag
);
BOOL WINAPI WTSSetListenerSecurityW(
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPWSTR pListenerName,
__in SECURITY_INFORMATION SecurityInformation,
__in PSECURITY_DESCRIPTOR pSecurityDescriptor);
BOOL WINAPI WTSSetListenerSecurityA(
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPSTR pListenerName,
__in SECURITY_INFORMATION SecurityInformation,
__in PSECURITY_DESCRIPTOR pSecurityDescriptor);
BOOL WINAPI WTSGetListenerSecurityW(
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPWSTR pListenerName,
__in SECURITY_INFORMATION SecurityInformation,
__out_opt PSECURITY_DESCRIPTOR pSecurityDescriptor,
__in DWORD nLength,
__out LPDWORD lpnLengthNeeded);
BOOL WINAPI WTSGetListenerSecurityA(
__in HANDLE hServer,
__in PVOID pReserved,
__in DWORD Reserved,
__in LPSTR pListenerName,
__in SECURITY_INFORMATION SecurityInformation,
__out_opt PSECURITY_DESCRIPTOR pSecurityDescriptor,
__in DWORD nLength,
__out LPDWORD lpnLengthNeeded);
#ifdef UNICODE
#define WTSLISTENERCONFIG WTSLISTENERCONFIGW
#define PWTSLISTENERCONFIG PWTSLISTENERCONFIGW
#define WTSQueryListenerConfig WTSQueryListenerConfigW
#define WTSCreateListener WTSCreateListenerW
#define WTSSetListenerSecurity WTSSetListenerSecurityW
#define WTSGetListenerSecurity WTSGetListenerSecurityW
#else
#define WTSLISTENERCONFIG WTSLISTENERCONFIGA
#define PWTSLISTENERCONFIG PWTSLISTENERCONFIGA
#define WTSQueryListenerConfig WTSQueryListenerConfigA
#define WTSCreateListener WTSCreateListenerA
#define WTSSetListenerSecurity WTSSetListenerSecurityA
#define WTSGetListenerSecurity WTSGetListenerSecurityA
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* !_INC_WTSAPI */ #endif /* !_INC_WTSAPI */
 End of changes. 26 change blocks. 
5 lines changed or deleted 866 lines changed or added

This html diff was produced by rfcdiff 1.41.