You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
747 lines
34 KiB
747 lines
34 KiB
/****************************************************************************/
|
|
// at120ex.h
|
|
//
|
|
// RDP T.120 protocol extensions
|
|
//
|
|
// Copyright (C) 1997-2000 Microsoft Corporation
|
|
/****************************************************************************/
|
|
#ifndef _H_AT120EX
|
|
#define _H_AT120EX
|
|
|
|
|
|
/****************************************************************************/
|
|
/* TShare security constants. */
|
|
/****************************************************************************/
|
|
#include <tssec.h>
|
|
|
|
#if !defined(OS_WINCE) && !defined(OS_WIN16)
|
|
#include <winsta.h>
|
|
#endif //OS_WIN16
|
|
|
|
/****************************************************************************/
|
|
/* */
|
|
/* Definition of GCC User Data used by RDP */
|
|
/* */
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/* H221 keys. */
|
|
/****************************************************************************/
|
|
#define H221_KEY_LEN 4
|
|
#define SERVER_H221_KEY "McDn"
|
|
#define CLIENT_H221_KEY "Duca"
|
|
|
|
|
|
/****************************************************************************/
|
|
/* User data identifiers */
|
|
/****************************************************************************/
|
|
/****************************************************************************/
|
|
/* Client to Server IDs */
|
|
/****************************************************************************/
|
|
#define RNS_UD_CS_CORE_ID 0xc001
|
|
#define RNS_UD_CS_SEC_ID 0xc002
|
|
#define RNS_UD_CS_NET_ID 0xc003
|
|
#define TS_UD_CS_CLUSTER_ID 0xC004
|
|
|
|
/****************************************************************************/
|
|
/* Server to Client IDs */
|
|
/****************************************************************************/
|
|
#define RNS_UD_SC_CORE_ID 0x0c01
|
|
#define RNS_UD_SC_SEC_ID 0x0c02
|
|
#define RNS_UD_SC_NET_ID 0x0c03
|
|
|
|
/****************************************************************************/
|
|
/* Color depths supported */
|
|
/****************************************************************************/
|
|
#define RNS_UD_COLOR_4BPP 0xca00
|
|
#define RNS_UD_COLOR_8BPP 0xca01
|
|
#define RNS_UD_COLOR_16BPP_555 0xca02
|
|
#define RNS_UD_COLOR_16BPP_565 0xca03
|
|
#define RNS_UD_COLOR_24BPP 0xca04
|
|
|
|
#ifdef DC_HICOLOR
|
|
/****************************************************************************/
|
|
/* High color support */
|
|
/****************************************************************************/
|
|
#define RNS_UD_24BPP_SUPPORT 0x01
|
|
#define RNS_UD_16BPP_SUPPORT 0x02
|
|
#define RNS_UD_15BPP_SUPPORT 0x04
|
|
#endif
|
|
|
|
/****************************************************************************/
|
|
/* SAS Sequence identifiers (incomplete). */
|
|
/* Specifies the SAS sequence the client will use to access the login */
|
|
/* screen in the Server. */
|
|
/****************************************************************************/
|
|
#define RNS_UD_SAS_NONE 0xaa01
|
|
#define RNS_UD_SAS_CADEL 0xaa02
|
|
#define RNS_UD_SAS_DEL 0xaa03
|
|
#define RNS_UD_SAS_SYSRQ 0xaa04
|
|
#define RNS_UD_SAS_ESC 0xaa05
|
|
#define RNS_UD_SAS_F8 0xaa06
|
|
|
|
/****************************************************************************/
|
|
/* Keyboard layout identifiers. */
|
|
/****************************************************************************/
|
|
#define RNS_UD_KBD_DEFAULT 0
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Version number */
|
|
/* Major version Minor version */
|
|
/* 0xFFFF0000 0x0000FFFF */
|
|
/****************************************************************************/
|
|
#define RNS_UD_VERSION 0x00080004 // Major 0008 - Minor 0004
|
|
|
|
#define _RNS_MAJOR_VERSION(x) (x >> 16)
|
|
#define _RNS_MINOR_VERSION(x) (x & 0x0000ffff)
|
|
|
|
#define RNS_UD_MAJOR_VERSION (RNS_UD_VERSION >> 16)
|
|
#define RNS_UD_MINOR_VERSION (RNS_UD_VERSION & 0x0000ffff)
|
|
|
|
#define RNS_TERMSRV_40_UD_VERSION 0x00080001 // UD version used by Terminal
|
|
// server 4.0 RTM
|
|
#define RNS_DNS_USERNAME_UD_VERSION 0x00080004 // Usernames longer than 20 ok
|
|
|
|
|
|
/****************************************************************************/
|
|
// Security header flags
|
|
/****************************************************************************/
|
|
#define RNS_SEC_EXCHANGE_PKT 0x0001
|
|
#define RNS_SEC_ENCRYPT 0x0008
|
|
#define RNS_SEC_RESET_SEQNO 0x0010
|
|
#define RNS_SEC_IGNORE_SEQNO 0x0020
|
|
#define RNS_SEC_INFO_PKT 0x0040
|
|
#define RNS_SEC_LICENSE_PKT 0x0080
|
|
#define RDP_SEC_REDIRECTION_PKT 0x0100
|
|
#define RDP_SEC_REDIRECTION_PKT2 0x0200
|
|
#define RDP_SEC_REDIRECTION_PKT3 0x0400
|
|
#define RDP_SEC_SECURE_CHECKSUM 0x0800
|
|
|
|
//
|
|
// If this flag is specified by the server
|
|
// it means the client should encrypt all licensing
|
|
// packets it sends up to the server.
|
|
//
|
|
// This happens at this early stage because the server
|
|
// has to expose this capability before normal capability
|
|
// negotiation.
|
|
//
|
|
// We also have licensing packets encrypted from the
|
|
// server to the client, reusing the same flag here.
|
|
// For clarify, the flag is defined twice to indicate
|
|
// the encryption-direction (CS vs. SC)
|
|
//
|
|
#define RDP_SEC_LICENSE_ENCRYPT_CS 0x0200
|
|
#define RDP_SEC_LICENSE_ENCRYPT_SC 0x0200
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Flags which define non-data packets */
|
|
/****************************************************************************/
|
|
#define RNS_SEC_NONDATA_PKT (RNS_SEC_EXCHANGE_PKT | \
|
|
RNS_SEC_INFO_PKT | \
|
|
RNS_SEC_LICENSE_PKT | \
|
|
RDP_SEC_REDIRECTION_PKT | \
|
|
RDP_SEC_REDIRECTION_PKT2 | \
|
|
RDP_SEC_REDIRECTION_PKT3)
|
|
|
|
|
|
/****************************************************************************/
|
|
/* RNS info packet flags */
|
|
/****************************************************************************/
|
|
#define RNS_INFO_MOUSE 0x0001
|
|
#define RNS_INFO_DISABLECTRLALTDEL 0x0002
|
|
#define RNS_INFO_DOUBLECLICKDETECT 0x0004
|
|
#define RNS_INFO_AUTOLOGON 0x0008
|
|
#define RNS_INFO_UNICODE 0x0010
|
|
#define RNS_INFO_MAXIMIZESHELL 0x0020
|
|
#define RNS_INFO_LOGONNOTIFY 0x0040
|
|
#define RNS_INFO_COMPRESSION 0x0080
|
|
#define RNS_INFO_ENABLEWINDOWSKEY 0x0100
|
|
#define RNS_INFO_REMOTECONSOLEAUDIO 0x2000
|
|
|
|
// See compress.h for type values that can appear in these 4 bits.
|
|
#define RNS_INFO_COMPR_TYPE_MASK 0x1E00
|
|
#define RNS_INFO_COMPR_TYPE_SHIFT 9
|
|
|
|
// When this flag is set, the client should only send encrypted packet to server
|
|
#define RNS_INFO_FORCE_ENCRYPTED_CS_PDU 0x4000
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_SECURITY_HEADER */
|
|
/* */
|
|
/* Description: Security header sent with all packets if encryption is in */
|
|
/* force. */
|
|
/* */
|
|
/* This header has the following structure: */
|
|
/* - flags (one or more of the RNS_SEC_ flags above) */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_SECURITY_HEADER
|
|
{
|
|
TSUINT16 flags;
|
|
TSUINT16 flagsHi;
|
|
} RNS_SECURITY_HEADER, FAR *PRNS_SECURITY_HEADER;
|
|
typedef RNS_SECURITY_HEADER UNALIGNED FAR *PRNS_SECURITY_HEADER_UA;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_SECURITY_HEADER */
|
|
/* */
|
|
/* Description: Security header sent with all packets if encryption is in */
|
|
/* force. */
|
|
/* */
|
|
/* This header has the following structure: */
|
|
/* - flags (one or more of the RNS_SEC_ flags above) */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_SECURITY_HEADER1
|
|
{
|
|
TSUINT16 flags;
|
|
TSUINT16 flagsHi;
|
|
TSINT8 dataSignature[DATA_SIGNATURE_SIZE];
|
|
} RNS_SECURITY_HEADER1, FAR *PRNS_SECURITY_HEADER1;
|
|
typedef RNS_SECURITY_HEADER1 UNALIGNED FAR *PRNS_SECURITY_HEADER1_UA;
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_SECURITY_HEADER */
|
|
/* */
|
|
/* Description: Security header sent with all packets if encryption is in */
|
|
/* force. */
|
|
/* */
|
|
/* This header has the following structure: */
|
|
/* - flags (one or more of the RNS_SEC_ flags above) */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_SECURITY_HEADER2
|
|
{
|
|
TSUINT16 flags;
|
|
TSUINT16 flagsHi;
|
|
TSUINT16 length; // length of the this header
|
|
TSUINT8 version;
|
|
#define TSFIPS_VERSION1 1
|
|
TSUINT8 padlen; // length of the padding in the encrypted data, has to be next to last
|
|
TSINT8 dataSignature[MAX_SIGN_SIZE];
|
|
} RNS_SECURITY_HEADER2, FAR *PRNS_SECURITY_HEADER2;
|
|
typedef RNS_SECURITY_HEADER2 UNALIGNED FAR *PRNS_SECURITY_HEADER2_UA;
|
|
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_SECURITY_PACKET */
|
|
/* */
|
|
/* Description: Structure of security packet sent during security exchange */
|
|
/* */
|
|
/* The packet has the following structure */
|
|
/* - flags (RNS_SEC_EXCHANGE_PKT) */
|
|
/* - length length of data */
|
|
/* - variable length data */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_SECURITY_PACKET
|
|
{
|
|
TSUINT32 flags;
|
|
TSUINT32 length;
|
|
/* data follows */
|
|
} RNS_SECURITY_PACKET, FAR *PRNS_SECURITY_PACKET;
|
|
typedef RNS_SECURITY_PACKET UNALIGNED FAR *PRNS_SECURITY_PACKET_UA;
|
|
|
|
|
|
/****************************************************************************/
|
|
// RDP_SERVER_REDIRECTION_PACKET
|
|
//
|
|
// Used to communicate a server redirection to the client.
|
|
/****************************************************************************/
|
|
typedef struct
|
|
{
|
|
// This corresponds to the security header flags field. We use this to
|
|
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
|
|
TSUINT16 Flags;
|
|
|
|
// Overall length of this packet, including the header fields.
|
|
TSUINT16 Length;
|
|
|
|
TSUINT32 SessionID;
|
|
|
|
// Variable-length, zero-terminated Unicode string. No accompanying size
|
|
// field is given since the size can be determined from the length above.
|
|
// Up to TS_MAX_SERVERADDRESS_LENGTH Unicode characters in length (incl.
|
|
// terminating null).
|
|
TSUINT16 ServerAddress[1];
|
|
} RDP_SERVER_REDIRECTION_PACKET, FAR *PRDP_SERVER_REDIRECTION_PACKET;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
// This corresponds to the security header flags field. We use this to
|
|
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
|
|
TSUINT16 Flags;
|
|
|
|
// Overall length of this packet, including the header fields.
|
|
TSUINT16 Length;
|
|
|
|
TSUINT32 SessionID;
|
|
TSUINT32 RedirFlags;
|
|
#define TARGET_NET_ADDRESS 0x1
|
|
#define LOAD_BALANCE_INFO 0x2
|
|
|
|
// Variable-length. For each field, it has the form
|
|
// ULONG Length
|
|
// BYTE data[]
|
|
} RDP_SERVER_REDIRECTION_PACKET_V2, FAR *PRDP_SERVER_REDIRECTION_PACKET_V2;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
// This corresponds to the security header flags field. We use this to
|
|
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
|
|
TSUINT16 Flags;
|
|
|
|
// Overall length of this packet, including the header fields.
|
|
TSUINT16 Length;
|
|
|
|
TSUINT32 SessionID;
|
|
TSUINT32 RedirFlags;
|
|
#define TARGET_NET_ADDRESS 0x1
|
|
#define LOAD_BALANCE_INFO 0x2
|
|
#define LB_USERNAME 0x4
|
|
#define LB_DOMAIN 0x8
|
|
#define LB_PASSWORD 0x10
|
|
// In case the policy is set on the server side the client should not store
|
|
// the user name it gets from the V3 redirection packet in the default.rdp
|
|
// file
|
|
#define LB_DONTSTOREUSERNAME 0x20
|
|
|
|
#define LB_SMARTCARD_LOGON 0x40
|
|
// used to inform client the machine IP for later ARC use
|
|
#define LB_NOREDIRECT 0x80
|
|
|
|
// Variable-length. For each field, it has the form
|
|
// ULONG Length
|
|
// BYTE data[]
|
|
} RDP_SERVER_REDIRECTION_PACKET_V3, FAR *PRDP_SERVER_REDIRECTION_PACKET_V3;
|
|
|
|
//
|
|
// Time zone packet
|
|
//
|
|
#ifndef _RDP_TIME_ZONE_INFORMATION_
|
|
#define _RDP_TIME_ZONE_INFORMATION_
|
|
typedef struct _RDP_SYSTEMTIME {
|
|
TSUINT16 wYear;
|
|
TSUINT16 wMonth;
|
|
TSUINT16 wDayOfWeek;
|
|
TSUINT16 wDay;
|
|
TSUINT16 wHour;
|
|
TSUINT16 wMinute;
|
|
TSUINT16 wSecond;
|
|
TSUINT16 wMilliseconds;
|
|
} RDP_SYSTEMTIME;
|
|
|
|
typedef struct _RDP_TIME_ZONE_INFORMATION {
|
|
TSINT32 Bias;
|
|
TSWCHAR StandardName[ 32 ];
|
|
RDP_SYSTEMTIME StandardDate;
|
|
TSINT32 StandardBias;
|
|
TSWCHAR DaylightName[ 32 ];
|
|
RDP_SYSTEMTIME DaylightDate;
|
|
TSINT32 DaylightBias;
|
|
} RDP_TIME_ZONE_INFORMATION;
|
|
#endif //_RDP_TIME_ZONE_INFORMATION_
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_INFO_PACKET */
|
|
/* */
|
|
/* The packet has the following structure */
|
|
/* - fMouse Mouse enabled flag */
|
|
/* - fDisableCtrlAltDel CtrlAltDel disable state */
|
|
/* - fDoubleClickDetect Double click detect state */
|
|
/* - Domain Domain */
|
|
/* - UserName UserName */
|
|
/* - Password Password */
|
|
/****************************************************************************/
|
|
// The following fields are added post Win2000 Beta 3
|
|
// Future variable length fields can be appended to this struct in similar
|
|
// fashion
|
|
|
|
#define RNS_INFO_INVALID_SESSION_ID LOGONID_NONE
|
|
|
|
typedef struct tagRNS_EXTENDED_INFO_PACKET
|
|
{
|
|
TSUINT16 clientAddressFamily;
|
|
TSUINT16 cbClientAddress;
|
|
TSUINT8 clientAddress[TS_MAX_CLIENTADDRESS_LENGTH];
|
|
TSUINT16 cbClientDir;
|
|
TSUINT8 clientDir[TS_MAX_CLIENTDIR_LENGTH];
|
|
//client time zone information
|
|
RDP_TIME_ZONE_INFORMATION clientTimeZone;
|
|
TSUINT32 clientSessionId;
|
|
//
|
|
// List of features to disable
|
|
// (flags are defined in the protocol independent header tsperf.h)
|
|
//
|
|
TSUINT32 performanceFlags;
|
|
//
|
|
// Flags field
|
|
//
|
|
TSUINT16 cbAutoReconnectLen;
|
|
|
|
//
|
|
// Variable length portion. Only sent up if autoreconnection info
|
|
// is specified
|
|
//
|
|
TSUINT8 autoReconnectCookie[TS_MAX_AUTORECONNECT_LEN];
|
|
} RNS_EXTENDED_INFO_PACKET, FAR *PRNS_EXTENDED_INFO_PACKET;
|
|
typedef RNS_EXTENDED_INFO_PACKET UNALIGNED FAR *PRNS_EXTENDED_INFO_PACKET_UA;
|
|
|
|
typedef struct tagRNS_INFO_PACKET
|
|
{
|
|
//
|
|
// In UNICODE we reuse the CodePage field to hold the active input
|
|
// locale identifier (formerly called keyboard layout)
|
|
//
|
|
TSUINT32 CodePage;
|
|
TSUINT32 flags;
|
|
TSUINT16 cbDomain;
|
|
TSUINT16 cbUserName;
|
|
TSUINT16 cbPassword;
|
|
TSUINT16 cbAlternateShell;
|
|
TSUINT16 cbWorkingDir;
|
|
TSUINT8 Domain[TS_MAX_DOMAIN_LENGTH];
|
|
TSUINT8 UserName[TS_MAX_USERNAME_LENGTH];
|
|
TSUINT8 Password[TS_MAX_PASSWORD_LENGTH];
|
|
TSUINT8 AlternateShell[TS_MAX_ALTERNATESHELL_LENGTH];
|
|
TSUINT8 WorkingDir[TS_MAX_WORKINGDIR_LENGTH];
|
|
RNS_EXTENDED_INFO_PACKET ExtraInfo;
|
|
} RNS_INFO_PACKET, FAR *PRNS_INFO_PACKET;
|
|
typedef RNS_INFO_PACKET UNALIGNED FAR *PRNS_INFO_PACKET_UA;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* User Data Structures */
|
|
/****************************************************************************/
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_HEADER */
|
|
/* */
|
|
/* Header included in all user data structures */
|
|
/* - type one of the RNS_UD constants above */
|
|
/* - length length of data (including this header) */
|
|
/* - data one of the data structures below */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_HEADER
|
|
{
|
|
TSUINT16 type;
|
|
TSUINT16 length;
|
|
} RNS_UD_HEADER;
|
|
typedef RNS_UD_HEADER UNALIGNED FAR *PRNS_UD_HEADER;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_CS_CORE */
|
|
/* */
|
|
/* Client to Server core data */
|
|
/* - header standard header */
|
|
/* - version software version number */
|
|
/* - desktopWidth width of desktop in pels */
|
|
/* - desktopHeight height of desktop in pels */
|
|
/* - colorDepth color depth supported - see note below */
|
|
/* - SASSequence SAS sequence to use - one of the SAS constants above */
|
|
/* - keyboardLayout Keyboard layout / locale */
|
|
/* - clientName Name in Unicode characters */
|
|
/* - keyboardType ] */
|
|
/* - keyboardSubType ] FE stuff */
|
|
/* - keyboardFunctionKey ] */
|
|
/* - imeFileName ] */
|
|
/* - postBeta2ColorDepth Color depth supported - see note below */
|
|
/* - clientProductId */
|
|
/* - serialNumber */
|
|
#ifdef DC_HICOLOR
|
|
/* - highColorDepth preferred color depth (if not 8bpp) */
|
|
/* - supportedColorDepths high color depths supported by client */
|
|
#endif
|
|
/****************************************************************************/
|
|
#ifdef DC_HICOLOR
|
|
/****************************************************************************/
|
|
/* Notes on color depths: */
|
|
/* */
|
|
/* In the NT4 TSE development, beta 2 servers would only accept connections */
|
|
/* from clients requesting 8bpp - 4bpp support was only added later. To */
|
|
/* get around this problem while maintaining back compatibility with beta 2 */
|
|
/* servers, the postBeta2ColorDepth field was added which is recognised by */
|
|
/* servers later than beta 2 */
|
|
/* */
|
|
/* Later, support for high color depth (15, 16, and 24bpp) connections was */
|
|
/* added to the protocol. Again, for compatibility with old servers, new */
|
|
/* fields are required. The highColorDepth field contains the color depth */
|
|
/* the client would like (one of the RNS_UD_COLOR_XX values) while the */
|
|
/* supportedColorDepths field lists the high color depths the client is */
|
|
/* capable of supporting (using the RNS_UD_XXBPP_SUPPORT flags ORed */
|
|
/* together). */
|
|
/* */
|
|
/* Thus a new client on a 24bpp system will typically advertise the */
|
|
/* following color-related capabilities: */
|
|
/* */
|
|
/* colorDepth = RNS_UD_COLOR_8BPP - NT4 TSE Beta 2 servers look */
|
|
/* at this field */
|
|
/* postBeta2ColorDepth = RNS_UD_COLOR_8BPP - NT4 TSE and Win2000 servers */
|
|
/* examine this field */
|
|
/* highColorDepth = RNS_UD_COLOR_24BPP - post Win2000 (NT5.1?) */
|
|
/* supportedColorDepths = RNS_UD_24BPP_SUPPORT servers check these fields */
|
|
/* RNS_UD_16BPP_SUPPORT for preferred and supported */
|
|
/* RNS_UD_15BPP_SUPPORT color depths */
|
|
/* */
|
|
/****************************************************************************/
|
|
#else
|
|
/****************************************************************************/
|
|
/* A note on color depths: A beta2 Server rejects connections from a */
|
|
/* Client with a color depth of 4bpp. A released Server supports this. */
|
|
/* Therefore a new field, postBeta2ColorDepth, is added, which is */
|
|
/* recognised by released Servers and can take the value 4bpp. Beta2 */
|
|
/* Servers continue to check colorDepth only. */
|
|
/****************************************************************************/
|
|
#endif
|
|
typedef struct tagRNS_UD_CS_CORE
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 version;
|
|
TSUINT16 desktopWidth;
|
|
TSUINT16 desktopHeight;
|
|
TSUINT16 colorDepth;
|
|
TSUINT16 SASSequence;
|
|
TSUINT32 keyboardLayout;
|
|
TSUINT32 clientBuild;
|
|
// Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
|
|
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
|
|
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1];
|
|
TSUINT32 keyboardType;
|
|
TSUINT32 keyboardSubType;
|
|
TSUINT32 keyboardFunctionKey;
|
|
TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
|
|
TSUINT16 postBeta2ColorDepth;
|
|
TSUINT16 clientProductId;
|
|
TSUINT32 serialNumber;
|
|
#ifdef DC_HICOLOR
|
|
TSUINT16 highColorDepth;
|
|
TSUINT16 supportedColorDepths;
|
|
#endif
|
|
//Used to specify early capability info
|
|
//e.g support for error info PDU has to be
|
|
//setup before licensing (which unfortunately
|
|
//happens after caps negotiation)
|
|
#define RNS_UD_CS_SUPPORT_ERRINFO_PDU 0x0001
|
|
|
|
TSUINT16 earlyCapabilityFlags;
|
|
//fix shadow loop detection
|
|
//meherm 02/09/2001
|
|
#define CLIENT_PRODUCT_ID_LENGTH 32
|
|
TSUINT16 clientDigProductId[CLIENT_PRODUCT_ID_LENGTH];
|
|
|
|
} RNS_UD_CS_CORE;
|
|
typedef RNS_UD_CS_CORE UNALIGNED FAR *PRNS_UD_CS_CORE;
|
|
typedef PRNS_UD_CS_CORE UNALIGNED FAR *PPRNS_UD_CS_CORE;
|
|
|
|
// Original size structure used by shadowing code - do not use!
|
|
typedef struct tagRNS_UD_CS_CORE_V0
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 version;
|
|
TSUINT16 desktopWidth;
|
|
TSUINT16 desktopHeight;
|
|
TSUINT16 colorDepth;
|
|
TSUINT16 SASSequence;
|
|
TSUINT32 keyboardLayout;
|
|
TSUINT32 clientBuild;
|
|
// Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
|
|
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
|
|
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1];
|
|
TSUINT32 keyboardType;
|
|
TSUINT32 keyboardSubType;
|
|
TSUINT32 keyboardFunctionKey;
|
|
TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
|
|
TSUINT16 postBeta2ColorDepth;
|
|
TSUINT16 pad;
|
|
} RNS_UD_CS_CORE_V0, FAR *PRNS_UD_CS_CORE_V0;
|
|
typedef PRNS_UD_CS_CORE_V0 FAR *PPRNS_UD_CS_CORE_V0;
|
|
|
|
// Intermediate size structure used by shadowing code - do not use!
|
|
typedef struct tagRNS_UD_CS_CORE_V1
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 version;
|
|
TSUINT16 desktopWidth;
|
|
TSUINT16 desktopHeight;
|
|
TSUINT16 colorDepth;
|
|
TSUINT16 SASSequence;
|
|
TSUINT32 keyboardLayout;
|
|
TSUINT32 clientBuild;
|
|
// Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
|
|
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
|
|
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1];
|
|
TSUINT32 keyboardType;
|
|
TSUINT32 keyboardSubType;
|
|
TSUINT32 keyboardFunctionKey;
|
|
TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
|
|
TSUINT16 postBeta2ColorDepth;
|
|
TSUINT16 clientProductId;
|
|
TSUINT32 serialNumber;
|
|
} RNS_UD_CS_CORE_V1, FAR *PRNS_UD_CS_CORE_V1;
|
|
typedef PRNS_UD_CS_CORE_V1 FAR *PPRNS_UD_CS_CORE_V1;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_CS_SEC */
|
|
/* */
|
|
/* Client to Server security data */
|
|
/* - header standard header */
|
|
/* - encryptionMethods encryption method supported by the client */
|
|
/* - extEncryptionMethods used by the French Locale system for backward */
|
|
/* compatibility. */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_CS_SEC
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 encryptionMethods;
|
|
TSUINT32 extEncryptionMethods;
|
|
} RNS_UD_CS_SEC;
|
|
typedef RNS_UD_CS_SEC UNALIGNED FAR *PRNS_UD_CS_SEC;
|
|
typedef PRNS_UD_CS_SEC UNALIGNED FAR *PPRNS_UD_CS_SEC;
|
|
|
|
// Original size structure used by shadowing code - do not use!
|
|
typedef struct tagRNS_UD_CS_SEC_V0
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 encryptionMethods;
|
|
} RNS_UD_CS_SEC_V0, RNS_UD_CS_SEC_V1, FAR *PRNS_UD_CS_SEC_V0, FAR *PRNS_UD_CS_SEC_V1;
|
|
typedef PRNS_UD_CS_SEC_V0 FAR *PPRNS_UD_CS_SEC_V0;
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_CS_NET */
|
|
/* */
|
|
/* Description: Client to Server network data */
|
|
/* - header standard header */
|
|
/* - channelCount number of channel names */
|
|
/* - channel names */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_CS_NET
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 channelCount;
|
|
/* array of CHANNEL_DEF structures follows */
|
|
} RNS_UD_CS_NET;
|
|
typedef RNS_UD_CS_NET UNALIGNED FAR *PRNS_UD_CS_NET;
|
|
typedef PRNS_UD_CS_NET UNALIGNED FAR *PPRNS_UD_CS_NET;
|
|
|
|
/****************************************************************************/
|
|
// TS_UD_CS_CLUSTER
|
|
//
|
|
// Client-to-server information for server clustering-aware clients.
|
|
/****************************************************************************/
|
|
|
|
// Flag values.
|
|
|
|
// Client supports basic redirection.
|
|
#define TS_CLUSTER_REDIRECTION_SUPPORTED 0x01
|
|
|
|
// Bits 2..5 represent the version for the PDU
|
|
#define TS_CLUSTER_REDIRECTION_VERSION 0x3C
|
|
#define TS_CLUSTER_REDIRECTION_VERSION1 0x0
|
|
#define TS_CLUSTER_REDIRECTION_VERSION2 0x1
|
|
#define TS_CLUSTER_REDIRECTION_VERSION3 0x2
|
|
#define TS_CLUSTER_REDIRECTION_VERSION4 0x3
|
|
|
|
// Set if the client has already been redirected and the SessionID field
|
|
// in the struct contains a valid value.
|
|
#define TS_CLUSTER_REDIRECTED_SESSIONID_FIELD_VALID 0x02
|
|
#define TS_CLUSTER_REDIRECTED_SMARTCARD 0x40
|
|
|
|
typedef struct
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 Flags;
|
|
TSUINT32 RedirectedSessionID;
|
|
} TS_UD_CS_CLUSTER;
|
|
typedef TS_UD_CS_CLUSTER UNALIGNED FAR *PTS_UD_CS_CLUSTER;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_SC_CORE */
|
|
/* */
|
|
/* Server to Client core data */
|
|
/* - header standard header */
|
|
/* - version software version number */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_SC_CORE
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 version;
|
|
} RNS_UD_SC_CORE, FAR *PRNS_UD_SC_CORE;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_SC_SEC */
|
|
/* */
|
|
/* Server to Client security data */
|
|
/* - header standard header */
|
|
/* - encryptionMethod encryption method selected by the server */
|
|
/* - encryptionLevel encryption level supported by the server */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_SC_SEC
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 encryptionMethod;
|
|
TSUINT32 encryptionLevel;
|
|
} RNS_UD_SC_SEC, FAR *PRNS_UD_SC_SEC, FAR * FAR *PPRNS_UD_SC_SEC;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_SC_SEC1 */
|
|
/* */
|
|
/* Server to Client security data */
|
|
/* - header standard header */
|
|
/* - encryptionMethod encryption method selected by the server */
|
|
/* - serverRandomLen length of the server random */
|
|
/* - serverCertLen server certificate length */
|
|
/* - server random data */
|
|
/* - server certificate data */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_SC_SEC1
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT32 encryptionMethod;
|
|
TSUINT32 encryptionLevel;
|
|
TSUINT32 serverRandomLen;
|
|
TSUINT32 serverCertLen;
|
|
/* server random key data follows */
|
|
/* server certificate data follows */
|
|
} RNS_UD_SC_SEC1, FAR *PRNS_UD_SC_SEC1;
|
|
|
|
|
|
/****************************************************************************/
|
|
/* Structure: RNS_UD_SC_NET */
|
|
/* */
|
|
/* Server to Client network data */
|
|
/* - header standard header */
|
|
/* - MCSChannelID T128 MCS channel ID to use */
|
|
/* - pad unused */
|
|
/* - channelCount number of channels */
|
|
/* - channel IDs */
|
|
/****************************************************************************/
|
|
typedef struct tagRNS_UD_SC_NET
|
|
{
|
|
RNS_UD_HEADER header;
|
|
TSUINT16 MCSChannelID;
|
|
TSUINT16 channelCount; /* was pad, but always 0, in release 1 */
|
|
/* array of 2-byte integer MCS channel IDs follows (0 = unknown) */
|
|
} RNS_UD_SC_NET, FAR *PRNS_UD_SC_NET, FAR * FAR *PPRNS_UD_SC_NET;
|
|
|
|
/****************************************************************************/
|
|
/* Virtual channel protocol flags */
|
|
/* Header flags (internal protocol use only) */
|
|
/****************************************************************************/
|
|
#define CHANNEL_FLAG_SHOW_PROTOCOL 0x10
|
|
#define CHANNEL_FLAG_SUSPEND 0x20
|
|
#define CHANNEL_FLAG_RESUME 0x40
|
|
#define CHANNEL_FLAG_SHADOW_PERSISTENT 0x80
|
|
|
|
|
|
|
|
#endif /* _H_AT120EX */
|
|
|