3.4.5 Message Processing Events and Sequencing Rules

This section describes the session initialization messages that the novice receives and the session initialization messages that the novice responds with.

When the novice sends the REMOTEDESKTOP_CTL_SERVER_ANNOUNCE (section packet, it expects the following two packets to be sent by the expert:

The novice MUST also send the REMOTEDESKTOP_CTL_VERSIONINFO (section packet with the following values:



When the novice receives the REMOTEDESKTOP_CTL_VERSIONINFO (section packet, it MUST extract the major and minor version numbers from the packet. The major version number MUST be equal to 1, and the minor version number MUST be equal to 2; otherwise, the SAFERROR_INCOMPATIBLEVERSION error MUST be returned in the REMOTEDESKTOP_CTL_RESULT (section packet to the expert.<6>

When the novice receives the REMOTEDESKTOP_CTL_AUTHENTICATE (section packet, it MUST extract the Remote Assistance ConnectionString. The novice MUST authenticate whether or not the expert is connecting with the correct Remote Assistance Connection String, as specified in [MS-RAI] Appendix A. If the Remote Assistance Connection String is not valid, SAFERROR_INVALIDPASSWORD MUST be returned to the expert. If the Remote Assistance ConnectionString is valid, the expertBlob MUST be extracted. Also, the success code SAFERROR_NOERROR MUST be returned in the REMOTEDESKTOP_CTL_RESULT (section packet.

The REMOTEDESKTOP_CTL_RESULT (section packet can be sent with the following error codes.




No error occurred.


Sent from the novice to the expert when the novice rejects the Remote Assistance connection. This error is returned when the novice rejects Remote Assistance by clicking No in the Remote Assistance Acceptance UI dialog box; otherwise, when the novice clicks Yes in this UI dialog box, the novice desktop shadowing completes, and the expert can view the novice screen.


The version number in the packet was for an incompatible version.


MUST be returned by the novice when the password used produces an invalid Remote Assistance Connection String.

When the novice receives the REMOTEDESKTOP_CTL_REMOTE_CONTROL_DESKTOP packet, the novice MUST start desktop shadowing after getting the user's consent.

After receiving REMOTEDESKTOP_CTL_RESULT (section with SAFEERROR_NOERROR, the Remote Assistance session is considered established. When either the novice or expert ends a Remote Assistance session, it sends a REMOTEDESKTOP_CTL_DISCONNECT (section packet to the other.

The novice MAY also send the REMOTEDESKTOP_CTL_ISCONNECTED (section packet every 30 seconds over an idle connection.

The novice MAY receive the expert's IP address from the expert in a <Session Control> message (section 2.2.2) with the <NAME> containing the EXPERTIP value. This IP address could be used for maintaining a log of connecting experts.