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 2.2.1.7) packet, it expects the following two packets to be sent by the expert:

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

  • REMOTEDESKTOP MAJOR VERSION = 1

  • REMOTEDESKTOP MINOR VERSION = 2

When the novice receives the REMOTEDESKTOP_CTL_VERSIONINFO (section 2.2.1.8) 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 2.2.1.10) packet to the expert.<6>

When the novice receives the REMOTEDESKTOP_CTL_AUTHENTICATE (section 2.2.1.4) 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 2.2.1.10) packet.

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

Value

Meaning

SAFERROR_NOERROR

No error occurred.

SAFERROR_HELPEESAIDNO

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.

SAFERROR_INCOMPATIBLEVERSION

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

SAFERROR_INVALIDPASSWORD

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 2.2.1.10) 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 2.2.1.5) packet to the other.

The novice MAY also send the REMOTEDESKTOP_CTL_ISCONNECTED (section 2.2.1.6) 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.