Revision Summary Date Revision History Revision Class Comments 2/22/2007 0.01 New Version 0.01 release 6/1/2007 1.0 Major Updated and revised the technical content. 7/3/2007 1.0.1 Editorial Changed language and formatting in the technical content. 7/20/2007 1.1 Minor Clarified the meaning of the technical content. 8/10/2007 2.0 Updated and revised the technical content. 9/28/2007 3.0 Major Updated and revised the technical content. 10/23/2007 4.0 Major Updated and revised the technical content. 11/30/2007 4.0.1 Editorial Changed language and formatting in the technical content. 1/25/2008 5.0 Major Updated and revised the technical content. 3/14/2008 6.0 Updated and revised the
technical content. 5/16/2008 6.0.1 Editorial Changed language and formatting in the technical content. 6/20/2008 6.0.2 Editorial Changed language and formatting in the technical content. 7/25/2008 6.0.3 Editorial Changed language and formatting in the technical content. 8/29/2008 7.0 Updated and revised the technical content. 10/24/2008 8.0 Major Updated and revised the technical content. 12/5/2008 9.0 Major Updated and revised the technical content. 1/16/2009 10.0 Major Updated and revised the technical content. 2/27/2009 11.0 Major Updated and revised the technical content. 4/10/2009 12.0 Major Updated and revised the technical content.
5/22/2009 13.0 Major Updated and revised the technical content. 7/2/2009 14.0 Major Updated and revised the technical content. 8/14/2009 15.0 Major Updated and revised the technical content. 9/25/2009 16.0 Major Updated and revised the technical content. 11/6/2009 17.0 Major Updated and revised the technical content. 12/18/2009 18.0 Major Updated and revised the technical content. 1/29/2010 19.0 Major Updated and revised the technical content. 3/12/2010 20.0 Major Updated and revised the technical content. 4/23/2010 21.0 Major Updated and revised the technical content. 6/4/2010 22.0 Major Updated and revised the technical content. 7/16/2010 23.0 Major Updated and revised
technical content. 9/23/2011 28.0 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 29.0 Major Updated and revised the technical content. 3/30/2012 30.0 Major Updated and revised the technical content. 7/12/2012 30.1 Minor Clarified the meaning of the technical content. 10/25/2012 30.1 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 30.1 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 31.0 Updated and revised the technical content. 11/14/2013 32.0 Major Updated and revised the technical content.
2/13/2014 33.0 Major Updated and revised the technical content. 5/15/2014 34.0 Major Updated and revised the technical content. 6/30/2015 35.0 Major Significantly changed the technical content. 10/16/2015 35.0 None No changes to the meaning, language, or formatting of the technical content. 7/14/2016 36.0 Significantly changed the technical content. 6/1/2017 37.0 Significantly changed the technical content. 9/15/2017 38.0 Major Significantly changed the technical content. 9/12/2018 39.0 Major Significantly changed the technical content.
be a pointer to a structure. TSG_PACKET_TYPE_QUARENC_RESPONSE Constant/value Description TSG_PACKET_TYPE_QUARENC_RESPONSE 0x00004552 This constant is used by the packetId field of the structure. When this type is present, the packetQuarEncResponse field of the TSGPacket union field in the TSG_PACKET structure MUST be a pointer to a structure. TSG_CAPABILITY_TYPE_NAP Constant/value Description TSG_CAPABILITY_TYPE_NAP 0x00000001 This constant is used by the TSGCapNap of . It indicates whether capabilities are supported by the RDG and RDG . TSG_PACKET_TYPE_CAPS_RESPONSE Description TSG_PACKET_TYPE_CAPS_RESPONSE 0x00004350 This constant is used by the packetId field of the structure. When this type is present, the packetCapsResponse field of the TSGPacket union field in the TSG_PACKET structure MUST be a pointer to a structure.
Description TSG_ASYNC_MESSAGE_REAUTH 0x00000003 This constant is used by the msgType field of the TSG_PACKET_MSG_RESPONSE structure. This value indicates that the reauthMessage field of the TSG_PACKET_TYPE_MESSAGE_UNION contains the Reauthentication request to the client. TSG_TUNNEL_CALL_ASYNC_MSG_REQUEST Constant/value Description TSG_TUNNEL_CALL_ASYNC_MSG_REQUEST 0x00000001 This constant is used by the procId parameter of the TsProxyMakeTunnelCall method. This value indicates that the client can receive Service Messages and the RDG server SHOULD send the same when available. TSG_TUNNEL_CANCEL_ASYNC_MSG_REQUEST Constant/value Description TSG_TUNNEL_CANCEL_ASYNC_MSG_REQUEST 0x00000002 This constant is used by the procId parameter of the method. This value indicates that the has requested to cancel the pending service message request on the RDG . TSG_NAP_CAPABILITY_QUAR_SOH Constant/value Description
PKT_TYPE_HANDSHAKE_REQUEST 0x1 This constant represents that the packet type is . PKT_TYPE_HANDSHAKE_RESPONSE 0x2 This constant represents that the packet type is . PKT_TYPE_EXTENDED_AUTH_MSG 0x3 This constant represents that the packet type is an message. PKT_TYPE_TUNNEL_CREATE 0x4 This constant represents that the packet type is a create request. PKT_TYPE_TUNNEL_RESPONSE 0x5 This constant represents that the packet type is a tunnel (2) create response. PKT_TYPE_TUNNEL_AUTH 0x6 This constant represents that the packet type is a tunnel (2) authorization request. PKT_TYPE_TUNNEL_AUTH_RESPONSE 0x7 This constant represents that the packet type is a tunnel (2) authorization response. PKT_TYPE_CHANNEL_CREATE 0x8 This constant represents that the
HTTP_TUNNEL_AUTH_FIELDS_PRESENT_FLAGS Enumeration Constant/value Description HTTP_TUNNEL_AUTH_FIELD_SOH 0x1 This constant represents that the structure contains the statementOfHealth field. HTTP_TUNNEL_AUTH_RESPONSE_FIELDS_PRESENT_FLAGS Enumeration Constant/value Description HTTP_TUNNEL_AUTH_RESPONSE_FIELD_REDIR_FLAGS 0x1 This constant represents that contains the redirFlags field. HTTP_TUNNEL_AUTH_RESPONSE_FIELD_IDLE_TIMEOUT 0x2 This constant represents that HTTP_TUNNEL_AUTH_RESPONSE_OPTIONAL contains the idleTimeout field. HTTP_TUNNEL_AUTH_RESPONSE_FIELD_SOH_RESPONSE 0x4 This constant represents that HTTP_TUNNEL_AUTH_RESPONSE_OPTIONAL contains the SoHResponse HTTP_TUNNEL_PACKET_FIELDS_PRESENT_FLAGS Enumeration Constant/value Description HTTP_TUNNEL_PACKET_FIELD_PAA_COOKIE 0x1 This constant represents that contains the PAACookie HTTP_TUNNEL_PACKET_FIELD_REAUTH 0x2 This constant represents that HTTP_TUNNEL_PACKET_OPTIONAL contains the reauthTunnelContext field. HTTP_TUNNEL_REDIR_FLAGS Enumeration Constant/value Description HTTP_TUNNEL_REDIR_ENABLE_ALL 0x80000000 This constant represents
that device redirection is enabled for all devices HTTP_TUNNEL_REDIR_DISABLE_ALL 0x40000000 This constant represents that device redirection is disabled for all devices HTTP_TUNNEL_REDIR_DISABLE_DRIVE 0x1 This constant represents that drive redirection is disabled. HTTP_TUNNEL_REDIR_DISABLE_PRINTER 0x2 This constant represents that printer redirection is disabled. HTTP_TUNNEL_REDIR_DISABLE_PORT 0x4 This constant represents that port redirection is disabled. HTTP_TUNNEL_REDIR_DISABLE_CLIPBOARD 0x8 This constant represents that clibboard redirection is disabled. HTTP_TUNNEL_REDIR_DISABLE_PNP 0x10 This constant represents that PnP redirection is disabled. HTTP_TUNNEL_RESPONSE_FIELDS_PRESENT_FLAGS Enumeration Constant/value Description HTTP_TUNNEL_RESPONSE_FIELD_TUNNEL_ID 0x1 This constant represents that contains the tunnelId field.
HTTP_TUNNEL_RESPONSE_FIELD_CAPS 0x2 This constant represents that HTTP_TUNNEL_RESPONSE_OPTIONAL contains the capsFlags field. HTTP_TUNNEL_RESPONSE_FIELD_SOH_REQ 0x4 This constant represents that HTTP_TUNNEL_RESPONSE_OPTIONAL contains the nonce and the serverCert fields. HTTP_TUNNEL_RESPONSE_FIELD_CONSENT_MSG 0x10 This constant represents that HTTP_TUNNEL_RESPONSE_OPTIONAL contains the consentMsg HTTP_CAPABILITY_TYPE Enumeration Constant/value Description HTTP_CAPABILITY_TYPE_QUAR_SOH 0x1 This constant represents whether the RDG or the RDG is NAP capable. HTTP_CAPABILITY_IDLE_TIMEOUT 0x2 This constant represents whether the RDG client or the RDG server supports idle timeout. HTTP_CAPABILITY_MESSAGING_CONSENT_SIGN 0x4 This constant represents whether the RDG client or the RDG server supports consent messaging. HTTP_CAPABILITY_MESSAGING_SERVICE_MSG 0x8 This constant represents whether the RDG client or the RDG server supports . HTTP_CAPABILITY_REAUTH This constant
0x000003E3 ERROR_OPERATION_ABORTED Returned when the RDG server does not receive a method call before the expires. HTTP Transport Return Codes There are no return codes that are specific only to the transport. UDP Transport Return Codes There are no return codes that are specific only to the transport. Structures and Unions Common Structures and Unions None. RPC over HTTP Transport Structures and Unions TSENDPOINTINFO The TSENDPOINTINFO structure contains information about the to which the RDG attempts to connect. typedef struct _tsendpointinfo { [size_is(numResourceNames)] RESOURCENAME* resourceName; [range(0, MAX_RESOURCE_NAMES)] unsigned long numResourceNames; [unique, size_is(numAlternateResourceNames)] RESOURCENAME* alternateResourceNames; 3)] unsigned short numAlternateResourceNames; unsigned long Port; } TSENDPOINTINFO, *PTSENDPOINTINFO; resourceName: An of RESOURCENAME strings, as specified in section . The range is from 0 to numResourceNames. This array, in conjunction with alternateResourceNames parameter array, comprises the alias names of the target server to which the RDG server can connect. As specified in the , the RDG server acts as a proxy to target server. The RDP and target server MUST use to communicate. numResourceNames: The number of RESOURCENAME datatypes in the resourceName array. The value MUST be in the range of 1 to 50, inclusive. alternateResourceNames: An array of RESOURCENAME strings to be used as alternative names for the target server. The range is from 0 to numAlternateResourceNames.<10>
The TSG_CAPABILITIES_UNION union specifies an switch_type union of structures as follows. typedef [switch_type(unsigned long)] union { [case(TSG_CAPABILITY_TYPE_NAP)] TSG_CAPABILITY_NAP TSGCapNap; } TSG_CAPABILITIES_UNION, *PTSG_CAPABILITIES_UNION; TSGCapNap: A structure. TSG_CAPABILITY_NAP The TSG_CAPABILITY_NAP structure contains information about the capabilities of the RDG and RDG . This structure MUST be embedded in the structure. typedef struct _TSG_CAPABILITY_NAP { unsigned long capabilities; } TSG_CAPABILITY_NAP, *PTSG_CAPABILITY_NAP; capabilities: Indicates the NAP capabilities supported by the RDG client and RDG server. This bit field MUST be 0 or one or more of the following values. Value TSG_PACKET_QUARCONFIGREQUEST The TSG_PACKET_QUARCONFIGREQUEST structure contains information quarantine configuration. RDG and RDG MAY support this structure.<13> If the RDG server or RDG client do not support the TSG_PACKET_QUARCONFIGREQUEST structure, then the error code HRESULT_CODE(E_PROXY_NOTSUPPORTED) is returned. typedef struct _TSG_PACKET_QUARCONFIGREQUEST { unsigned long flags; } TSG_PACKET_QUARCONFIGREQUEST, *PTSG_PACKET_QUARCONFIGREQUEST; flags: Contains information about quarantine configuration. TSG_PACKET_QUARREQUEST
hdr data (variable) ... hdr (4 bytes): A . data (variable): An array of BYTE containing the RDP UDP data. DISC_PKT Structure This structure contains an code or reason for a UDP disconnect. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 hdr discReason ... hdr (4 bytes): A . discReason (8 bytes): A LONG specifying the error code or reason for the disconnect. UDP_PACKET_HEADER Structure This structure describes a UDP packet. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 pktID pktLen (2 bytes): The packet type information, which can be one of the enumerations specified in . pktLen (2 bytes): Specifies the packet length excluding the length of UDP_PACKET_HEADER. AUTHN_COOKIE_DATA Structure The AUTHN_COOKIE_DATA structure is used to authenticate a UDP connection. 0 1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 2 0 1 2 3 4 5 6 7 8 9 3 0 1 szUserName (1042 bytes) szPrimaryUDPAuthScheme (42 bytes) ftExpiryTime (8 bytes)
Pending state. contains The RDG client MUST end the protocol when this error is received. HRESULT_CODE(E_PROXY_REAUTH_CAP_FAILED) (0x000059FB) The connection MUST transition to Tunnel Pending state. Returned when a reauthentication attempt by the client has failed because the user is not authorized to connect through the RDG server anymore and the ADM element Negotiated Capabilities contains The RDG client MUST end the protocol when this error is received. HRESULT_CODE(E_PROXY_REAUTH_RAP_FAILED) (0x000059FC) The connection MUST transition to Tunnel Pending state. Returned when a reauthentication attempt by the client has failed because the user is not authorized to connect to the given end resource anymore and the ADM element Negotiated Capabilities contains The RDG client MUST end the protocol when this error is received. HRESULT_CODE(E_PROXY_CONNECTIONABORTED) (0x000004D4) The connection MUST transition to Tunnel Close Pending state. Returned when the following happens: The RDG server administrator forcefully disconnects the connection. Or when the ADM element Negotiated Capabilities doesn't contain and any one of the following happens: Session timeout occurs and disconnect on session timeout is configured at the RDG server. Reauthentication attempt by the client has failed because the user credentials are no longer valid. Reauthentication attempt by the client has failed because the user is not authorized to
158 157 157 15 Initialization 128 86 10 L events 127 83 112 M 36 Message processing 129 server 87 107 Messages 31 31 32 33 32 33 32 45 31 N 141 14 O Overview 17 18 17 19 16 16 P 157 32 33 41 41 41 41 44 44 41 44 41 41 41 41 44 41 41 41 41 41 41 148 27 27 163 Protocol Details 80 48 52 49 59 51 57 50 57 58 53 56 53 60 59 53 59 51 55 32 33 R 62 63 63 151 14 15 14 27 32 54 45 17 S Security 157 157 157 Sequencing 129 server 87 107 Server
80 84 86 83 112 message processing 87 107 84 sequencing rules 87 107 timer events 111 111 110 timers 86 82 19 29 T Timer events 127 server 111 111 110 Timers 128 server 86 82 170 31 48 38 38 38 52 37 39 40 40 39 39 49 59 51 57 50 57 58 53 56 53 60 59 53 59 38 37 36 38 37 36 37 36 38 37 36 51 55 39 39 91 107 108 98 88 94 132 100 132 133 132 101 134 133 134 U 78 77 V 29 28