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 1.2 Minor Clarified the meaning of the technical content. 9/28/2007 1.3 Minor Clarified the meaning of the technical content. 10/23/2007 1.3.1 Editorial Changed language and formatting in the technical content. 11/30/2007 1.4 Minor Clarified the meaning of the technical content. 1/25/2008 1.4.1 Editorial Changed language and formatting in the technical content.
and formatting in the technical content. 4/10/2009 3.0.3 Editorial Changed language and formatting in the technical content. 5/22/2009 4.0 Major Updated and revised the technical content. 7/2/2009 5.0 Major Updated and revised the technical content. 8/14/2009 5.1 Minor Clarified the meaning of the technical content. 9/25/2009 5.2 Minor Clarified the meaning of the technical content. 11/6/2009 6.0 Updated and revised the technical content. 12/18/2009 7.0 Updated and revised the technical content. 1/29/2010 8.0 Major Updated and revised the technical content. 3/12/2010 8.0.1 Editorial Changed language and formatting in the
formatting of the technical content. 2/11/2011 9.0.1 None No changes to the meaning, language, or formatting of the technical content. 3/25/2011 9.0.1 None No changes to the meaning, language, or formatting of the technical content. 5/6/2011 9.0.1 None No changes to the meaning, language, or formatting of the technical content. 6/17/2011 9.1 Minor Clarified the meaning of the technical content. 9/23/2011 9.1 None No changes to the meaning, language, or formatting of the technical content. 12/16/2011 10.0 Major Updated and revised the technical content. 3/30/2012 10.1 Clarified the meaning of the technical content.
7/12/2012 10.2 Clarified the meaning of the technical content. 10/25/2012 10.2 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 10.2 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 11.0 Major Updated and revised the technical content. 11/14/2013 11.0 None No changes to the meaning, language, or formatting of the technical content. 2/13/2014 11.0 None No changes to the meaning, language, or formatting of the technical content. 5/15/2014 11.0 None No changes to the meaning, language, or formatting of the technical content.
6/30/2015 12.0 Significantly changed the technical content. 10/16/2015 12.0 None No changes to the meaning, language, or formatting of the technical content. 7/14/2016 12.0 None No changes to the meaning, language, or formatting of the technical content. 6/1/2017 12.0 None No changes to the meaning, language, or formatting of the technical content. 9/15/2017 13.0 Major Significantly changed the technical content.
REMOTEDESKTOP_EXPERT_ON_VISTA The REMOTEDESKTOP_EXPERT_ON_VISTA is an announcement that is running Windows Vista operating system. This packet is sent from expert to . The REMOTEDESKTOP_EXPERT_ON_VISTA message is applicable only to version 2. 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 packetHeader (72 ... ... bufHeader Encrypted Password (variable) ... packetHeader (72 The part of the packet. The virtual channel name MUST be set to "RC_CTL". bufHeader (4 bytes): The part of the packet. The packet type MUST be set to REMOTEDESKTOP_EXPERT_ON_VISTA. Encrypted Password (variable): Encrypted Password string included in the message as a BSTR, as defined in section 2.2.5. For the password encryption flow diagram, refer to section 6. REMOTEDESKTOP_CTL_RANOVICE_NAME The REMOTEDESKTOP_CTL_RANOVICE_NAME packet is an optional packet that contains the novice name. This message is sent by the novice and is applicable to version 2 only. 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 packetHeader (72 bytes) ... ... bufHeader RANovice Name (variable) ... packetHeader (72 bytes): The part of the packet. The virtual channel name MUST be set to "RC_CTL".
7 SAFERROR_OUTOFMEMORY A memory allocation error occurred. 8 SAFERROR_CONNECTIONTIMEDOUT A connection could not be established within the time-out period. 9 SAFERROR_SOCKETCONNECTFAILED Connection to the remote computer failed. 11 SAFERROR_HOSTNOTFOUND The remote computer is unreachable. 12 SAFERROR_WINSOCKSENDFAILED A socket write failed. 14 SAFERROR_INVALIDIPADDR The IP address given is not valid. 15 SAFERROR_SOCKETRECVFAILED A socket read failed. 18 SAFERROR_INVALIDENCRYPTION An encryption occurred. 20 SAFERROR_GETHOSTBYNAMEFAILED Winsock name resolution failed. 21 SAFERROR_LICENSINGFAILED Remote Desktop Protocol: Basic Connectivity and Graphics Remoting licensing for the connection failed. 22 SAFERROR_ENCRYPTIONERROR Remote Desktop Protocol: Connectivity and
Graphics Remoting encryption error occurred. 23 SAFERROR_DECRYPTIONERROR A Remote Desktop Protocol decryption error occurred. 24 SAFERROR_INVALIDPARAMETERSTRING An invalid Remote Assistance Connection String, as specified in section 2.2, was used. 25 SAFERROR_HELPSESSIONNOTFOUND A Remote Assistance Connection String, as specified in [MS-RAI], section 2.2, was not found. 26 SAFERROR_INVALIDPASSWORD An invalid password was used. This message is only used in version 1. 27 SAFERROR_HELPSESSIONEXPIRED The Remote Assistance Connection String, as specified in [MS-RAI] section 2.2, has expired. 28 SAFERROR_CANTOPENRESOLVER The remote computer not resolve the session. 29 SAFERROR_UNKNOWNSESSMGRERROR An unknown error occurred in the remote session manager.
30 SAFERROR_CANTFORMLINKTOUSERSESSION The remote computer could not establish a connection to the specified user session. SAFERROR_RCPROTOCOLERROR A remote control protocol error occurred. 33 SAFERROR_RCUNKNOWNERROR An unknown remote control occurred. 34 SAFERROR_INTERNALERROR An internal error occurred. 35 SAFERROR_HELPEERESPONSEPENDING This code is not used. 36 SAFERROR_HELPEESAIDYES This code is not used. 37 SAFERROR_HELPEEALREADYBEINGHELPED The user is already under remote control. 38 SAFERROR_HELPEECONSIDERINGHELP This code is not used. 40 SAFERROR_HELPEENEVERRESPONDED The remote user did not accept the remote control request during the time-out period. 41 SAFERROR_HELPEESAIDNO The remote user denied the remote control request. 42 SAFERROR_HELPSESSIONACCESSDENIED The remote user does not have access to the specified connection
used produces an invalid Remote Assistance Connection String. When either the novice or expert ends a Remote Assistance session, it sends a packet to the other. The expert MAY also send the packet every 30 seconds over an idle connection. The expert MAY send the expert's IP address to the novice in a <> message (section 2.2.2) with the <NAME> containing the EXPERTIP value. This IP address could be used by the novice for logging purposes. Events The packet MAY be used to track the state of a . When used, both the and the MAY send this packet once every 30 seconds to indicate a connected state. No action is taken by either the expert or the novice on either receipt or nonreceipt of this packet. Other Local Events The Remote Assistance Protocol does not have external dependencies. Session Initialization the Novice (Server) Implementing Only Version 1 Details After a String 1 is obtained by the (as specified in sections 3.2 and 6), a basic Remote Assistance connection is established from the expert to the using the Remote Desktop Protocol: Basic Connectivity and Graphics Remoting, as specified in . This basic connection does not have the Expert View capability; that is, the expert cannot view the novice screen. Before the expert can view the novice screen, there is a message exchange between the novice and the expert. When this exchange is completed successfully, the expert is granted a view of the novice screen, and the is considered established. The Remote Assistance session initialization protocol sends session initialization messages on the RC_CTL virtual channel. The RC_CTL virtual channel persists throughout the duration of the Remote Assistance connection. If any errors occur during signaling, error codes are returned in the over the RC_CTL channel. Figure 3: Remote Assistance session initialization state diagram (from the novice /server perspective) Abstract Data Model The message signaling that takes place in the session initialization protocol is to establish the Remote Assistance session; that is, to change the state from the basic state in which the does not have the view of the screen to the state in which the expert has the view of the novice screen. When the Remote Assistance connection has completed successfully, or if there was an error during connection, the novice is responsible for keeping track of this state change.
Index A Abstract data model 61 61 58 55 Session Initialization Expert (Client) ( 36, 50) Session Initialization Novice (Server) ( 41, 53) 65 68 72 76 12 C 12 83 11 Chat (Text) Receiver 61 62 62 62 62 61 62 62 61 Chat (Text) Sender 61 61 61 61 61 60 61 61 61 D Data model - abstract 61 61 58 55 Session Initialization Expert (Client) ( 36, 50) Session Initialization Novice (Server) ( 41, 53) 65 68 72 76 E Examples 79 79 79 30 F 12 10 26 26 File Transfer Receiver 58 59 58 60 59 57 59 60 58 File Transfer Sender 55 55 55 57 56 54 56 57 55 79 G 8 H triggered events 62 61 59 55 Session Initialization Expert (Client) ( 37, 51) Session Initialization Novice (Server) ( 41, 54) 66 69 73 77 I 80 80 10 Initialization 62 61 58 55 Session Initialization Expert (Client) ( 37, 50) Session Initialization Novice (Server) ( 41, 53) 66
69 72 77 8 L Local events 62 61 60 57 Session Initialization Expert (Client) ( 39, 52) Session Initialization Novice (Server) ( 42, 54) 67 70 74 78 M Message processing 62 61 59 56 Session Initialization Expert (Client) ( 37, 51) Session Initialization Novice (Server) ( 41, 54) 66 69 73 77 Messages 30 26 27 27 26 22 13 13 13 13 30 N 9 O 10 P 80 11 11 81 Protocol Details 32 R 22 9 10 9 11 27 27 13 13 15 15 14 14 16 16 16 16 13 13 21 20 18 18 17 17 21 19 17 17 18 18 20 S Security 80 80 Sequencing 62 61 59 56 Session Initialization Expert (Client) ( 37, 51) Session Initialization Novice (Server) ( 41, 54) 66 69 73 77 26 10 22 10 Session Initialization Expert (Client) abstract data model ( 36, 50) higher-layer triggered events ( 37, 51) initialization ( 37, 50) local events ( 39, 52) message processing ( 37, 51) overview ( 35, 49) sequencing rules ( 37, 51) timer events ( 39, 51) timers ( 37, 50) Session Initialization Expert for Versions 1 and 2 (Client)
42 13 13 Session Initialization Novice (Server) abstract data model ( 41, 53) triggered events ( 41, 54) initialization ( 41, 53) local events ( 42, 54) message processing ( 41, 54) overview ( 40, 52) sequencing rules ( 41, 54) timer events ( 42, 54) timers ( 41, 53) Share Control RA Expert (Client) 65 66 66 67 66 65 66 67 65 Share Control RA Novice (Server) 68 69 69 70 69 68 69 70 68 12 13 T Timer events 62 61 60 57 Session Initialization Expert (Client) ( 39, 51) Session Initialization Novice (Server) ( 42, 54) 67 70 74 78 Timers 61 61 58 55 Session Initialization Expert (Client) ( 37, 50) Session Initialization Novice (Server) ( 41, 53) 65 68 72 76 83 13 Triggered events - 62 61 59 55 Session Initialization Expert (Client) ( 37, 51) Session Initialization Novice (Server) ( 41, 54) 66 69 73 77 V 12 12 Expert (Client) 72 73 72 74 73 70 73 74 72 Voice Novice (Server) 76 77 77 78 77 74 77 78 76 11 79