3.3.5 Message Processing Events and Sequencing Rules

This section describes the sequence of the session initialization messages that the expert receives as well as the session initialization messages with which the expert responds.

Remote Assistance session initialization sequence diagram for version 1

Figure 2: Remote Assistance session initialization sequence diagram for version 1

When the expert receives the REMOTEDESKTOP_CTL_SERVER_ANNOUNCE (section 2.2.1.7) session initialization messages, it MUST respond with a REMOTEDESKTOP_CTL_VERSIONINFO (section 2.2.1.8) packet with the following values.

 REMOTEDESKTOP MAJOR VERSION = 1
 REMOTEDESKTOP MINOR VERSION = 2
  

The expert MUST also send the REMOTEDESKTOP_CTL_AUTHENTICATE (section 2.2.1.4) packet. The expert name can be included in the packet's expertBlob so that the novice can be informed.

When the expert receives the REMOTEDESKTOP_CTL_VERSIONINFO (section 2.2.1.8) packet, the expert 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, a SAFERROR_INCOMPATIBLEVERSION error MUST be returned in the REMOTEDESKTOP_CTL_RESULT (section 2.2.1.10) packet to the novice.<5> If the version numbers are correct, the expert MUST remain silent, returning no messages to the novice, and MUST wait for the novice to return SAFERROR_NOERROR, as described in the following step.

The novice MUST verify the Remote Assistance Connection String, as specified in [MS-RAI] Appendix A, and return the success code SAFERROR_NOERROR in the REMOTEDESKTOP_CTL_RESULT (section 2.2.1.10) packet to the expert indicating that the Remote Assistance Connection String is valid.

If the Remote Assistance Connection String is not valid, the novice MUST return SAFERROR_INVALIDPASSWORD and disconnect the Remote Assistance session.

After receiving SAFERROR_NOERROR, the expert MUST send the REMOTEDESKTOP_CTL_REMOTE_CONTROL_DESKTOP (section 2.2.1.9) packet to the novice. While this packet contains the Remote Assistance Connection String, it is ignored on receipt, and the novice starts the desktop shadowing so the expert can view the novice screen. The novice finally sends the success code SAFERROR_NOERROR in the REMOTEDESKTOP_CTL_RESULT (section 2.2.1.10) packet, and the Remote Assistance session is considered established.

The REMOTEDESKTOP_CTL_RESULT packet can be received 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 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 expert MAY also send the REMOTEDESKTOP_CTL_ISCONNECTED (section 2.2.1.6) packet every 30 seconds over an idle connection.

The expert MAY send the expert's IP address to the novice in a <Session Control> message (section 2.2.2) with the <NAME> containing the EXPERTIP value. This IP address could be used by the novice for logging purposes.