Revision Summary Date Revision History Revision Class Comments 3/2/2007 0.01 New Version 0.01 release 7/3/2007 1.0 Major MLonghorn+90 7/20/2007 1.0.1 Editorial Changed language and formatting in the technical content. 8/10/2007 1.0.2 Editorial Changed language and formatting in the technical content. 9/28/2007 1.0.3 Editorial Changed language and formatting in the technical content. 10/23/2007 2.0 Major Added new normative references. 11/30/2007 2.1 Corrected some section numbering. 1/25/2008 2.1.1 Editorial Changed language and formatting in the technical content. 3/14/2008 3.0 Major Updated and revised the technical content. 5/16/2008 3.0.1 Editorial Changed language and formatting in the technical content. 6/20/2008 4.0 Updated and revised the technical content. 7/25/2008 4.0.1 Editorial Changed language and formatting in the technical content.
8/29/2008 4.0.2 Editorial Changed language and formatting in the technical content. 10/24/2008 4.0.3 Editorial Changed language and formatting in the technical content. 12/5/2008 5.0 Major Updated and revised the technical content. 1/16/2009 5.0.1 Editorial Changed language and formatting in the technical content. 2/27/2009 5.0.2 Editorial Changed language and formatting in the technical content. 4/10/2009 5.1 Minor Clarified the meaning of the technical content. 5/22/2009 6.0 Major Updated and revised the technical content. 7/2/2009 6.0.1 Editorial Changed language and formatting in the technical content. 8/14/2009 6.0.2 Editorial Changed language and formatting in the technical content. 9/25/2009 6.1 Clarified the meaning of the technical content. 11/6/2009 6.1.1 Editorial Changed language and formatting in the technical content.
12/18/2009 7.0 Major 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 technical content. 4/23/2010 9.0 Updated and revised the technical content. 6/4/2010 10.0 Updated and revised the technical content. 7/16/2010 11.0 Major Updated and revised the technical content. 8/27/2010 11.1 Minor Clarified the meaning of the technical content. 10/8/2010 11.1 None No changes to the meaning, language, or formatting of the technical content. 11/19/2010 11.1 None No changes to the meaning, language, or formatting of the technical content. 1/7/2011 11.1 None No changes to the meaning, language, or formatting of the technical content. 2/11/2011 12.0 Major Updated and revised the technical content.
3/25/2011 13.0 Updated and revised the technical content. 5/6/2011 13.0 None No changes to the meaning, language, or formatting of the technical content. 6/17/2011 13.1 Minor Clarified the meaning of the technical content. 9/23/2011 14.0 Major Updated and revised the technical content. 12/16/2011 15.0 Major Updated and revised the technical content. 3/30/2012 15.0 None No changes to the meaning, language, or formatting of the technical content. 7/12/2012 15.0 None No changes to the meaning, language, or formatting of the technical content. 10/25/2012 15.0 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 15.0 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 16.0 Major Updated and revised the technical content. 11/14/2013 17.0 Updated and revised the
technical content. 2/13/2014 18.0 Major Updated and revised the technical content. 5/15/2014 18.0 None No changes to the meaning, language, or formatting of the technical content. 6/30/2015 19.0 Significantly changed the technical content. 10/16/2015 20.0 Major Significantly changed the technical content. 3/2/2016 21.0 Major Significantly changed the technical content. 7/14/2016 22.0 Significantly changed the technical content. 6/1/2017 23.0 Major Significantly changed the technical content. 9/15/2017 24.0 Major Significantly changed the technical content. 12/1/2017 25.0 Major Significantly changed the technical content. 3/16/2018 26.0 Major Significantly changed the technical content.
NumVisibilityRects (optional) VisibilityRects (variable) ... OverlayDescription (variable) ... TaskbarButton (optional) EnforceServerZOrder (optional) AppBarState (optional) AppBarEdge (optional) Hdr (11 Eleven bytes. Common Window AltSec Order header, . The FieldsPresentFlags field of the header MUST conform to the values defined as follows. Value Meaning 0x01000000 WINDOW_ORDER_TYPE_WINDOW Indicates a Windowing Alternate Secondary Drawing Order describing a window. This flag MUST be set. 0x10000000 WINDOW_ORDER_STATE_NEW Indicates that the Windowing Alternate Secondary Drawing Order contains information for a new window. If this flag is not set, the order contains information for an existing window. 0x00000002 WINDOW_ORDER_FIELD_OWNER Indicates that the OwnerWindowId is present. 0x00000008 WINDOW_ORDER_FIELD_STYLE Indicates that the Style and ExtendedStyle fields are present. 0x00000010 WINDOW_ORDER_FIELD_SHOW Indicates that the ShowState field is present. 0x00000004 WINDOW_ORDER_FIELD_TITLE Indicates that the TitleInfo is present. 0x00004000 WINDOW_ORDER_FIELD_CLIENTAREAOFFSET Indicates that the ClientOffsetX and ClientOffsetY fields are present. 0x00010000 WINDOW_ORDER_FIELD_CLIENTAREASIZE Indicates that the ClientAreaWidth and ClientAreaHeight fields are present.<3> 0x00000080 WINDOW_ORDER_FIELD_RESIZE_MARGIN_X Indicates that the WindowLeftResizeMargin and WindowRightResizeMargin fields are present. 0x08000000 WINDOW_ORDER_FIELD_RESIZE_MARGIN_Y Indicates that the WindowTopResizeMargin and WindowBottomResizeMargin fields are present. 0x00020000 WINDOW_ORDER_FIELD_RPCONTENT Indicates that the RPContent field is present. <4> 0x00040000 WINDOW_ORDER_FIELD_ROOTPARENT Indicates that the RootParentHandle is present. <5>
TKF_HOTKEYACTIVE 0x00000004 The user can turn the Toggle Keys feature on or off by using the hotkey (holding NUM LOCK for 8 seconds). TKF_CONFIRMHOTKEY 0x00000008 The user will be prompted with a confirmation dialog before the Toggle Keys feature is enabled using the hotkey. TKF_HOTKEYSOUND 0x00000010 A is played whenever the Toggle Keys feature is turned on or off using the hotkey. Sticky Keys System Information Structure (TS_STICKYKEYS) The TS_STICKYKEYS packet defines parameters for the accessibility feature. 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 Flags (4 bytes): An unsigned 32-bit integer that is read by the server and used to set the Sticky Keys parameters. Flag Meaning SKF_STICKYKEYSON 0x00000001 The Sticky Keys feature is enabled. SKF_AVAILABLE 0x00000002 The Sticky Keys feature is available. SKF_HOTKEYACTIVE 0x00000004 The user can turn the Sticky Keys feature on or off by using the hotkey (pressing the SHIFT key five times). SKF_CONFIRMHOTKEY 0x00000008 The user will be prompted with a confirmation dialog before the Sticky Keys feature is enabled the hotkey. SKF_HOTKEYSOUND 0x00000010 A sound is played whenever the Sticky Keys feature is turned on or off using the hotkey. SKF_INDICATOR 0x00000020 A visual indicator is displayed when the Sticky Keys feature is enabled. SKF_AUDIBLEFEEDBACK 0x00000040 A sound is played whenever a modifier key is latched, locked, or released. SKF_TRISTATE 0x00000080 Pressing a modifier key in a row will lock the key down until the user presses it a third time. SKF_TWOKEYSOFF 0x00000100 Releasing a modifier key that has been pressed in combination with another key will turn off the Sticky Keys feature. SKF_LSHIFTLOCKED 0x00010000 The left SHIFT key is locked.
SKF_RSHIFTLOCKED 0x00020000 The right SHIFT key is locked. SKF_LCTLLOCKED 0x00040000 The left CTRL key is locked. SKF_RCTLLOCKED 0x00080000 The right CTRL key is locked. SKF_LALTLOCKED 0x00100000 The left ALT key is locked. SKF_RALTLOCKED 0x00200000 The right ALT key is locked. SKF_LWINLOCKED 0x00400000 The left WINDOWS key is locked. SKF_RWINLOCKED 0x00800000 The WINDOWS key is locked. SKF_LSHIFTLATCHED 0x01000000 The left SHIFT key is latched. SKF_RSHIFTLATCHED 0x02000000 The right SHIFT key is latched. SKF_LCTLLATCHED 0x04000000 The left CTRL key is latched. SKF_RCTLLATCHED 0x08000000 The right CTRL key is latched. SKF_LALTLATCHED 0x10000000 The left ALT key is latched. SKF_RALTLATCHED 0x20000000 The right ALT key is latched. SKF_LWINLATCHED 0x40000000 The left WINDOWS key is latched. SKF_RWINLATCHED 0x80000000 The right WINDOWS key is latched. Server System Parameters Update Messages Server System Parameters Update PDU (TS_RAIL_ORDER_SYSPARAM) The Server System Parameters Update PDU is sent from the server to client to synchronize system parameters on the client with those on the server.
Hdr WindowId IsMoveSizeStart MoveSizeType TopLeftX TopLeftY Hdr (4 A header. The orderType field of the header MUST be set to TS_RAIL_ORDER_LOCALMOVESIZE (0x0009). WindowId (4 bytes): An unsigned 32-bit integer. The ID of the window on the server that is being moved or resized. IsMoveSizeStart (2 bytes): An unsigned 16-bit integer. Indicates the move or resize is ending. This field MUST be set to 0. MoveSizeType (2 An unsigned 16-bit integer. Indicates the type of the move/size. Value Meaning RAIL_WMSZ_LEFT 0x0001 The left edge of the window is sized. RAIL_WMSZ_RIGHT 0x0002 The right edge of the window is being sized. RAIL_WMSZ_TOP 0x0003 The top edge of the window is being sized. RAIL_WMSZ_TOPLEFT 0x0004 The top-left corner of the window is sized. RAIL_WMSZ_TOPRIGHT 0x0005 The top-right corner of the window is being sized. RAIL_WMSZ_BOTTOM 0x0006 The bottom edge of the window is sized. RAIL_WMSZ_BOTTOMLEFT 0x0007 The bottom-left corner of the window is being sized. RAIL_WMSZ_BOTTOMRIGHT 0x0008 The bottom-right corner of the window is being sized. RAIL_WMSZ_MOVE 0x0009 The window is moved by using the mouse. RAIL_WMSZ_KEYMOVE 0x000A The window is moved by using the keyboard.
0x00000100 TF_SFT_EXTRAICONSONMINIMIZED 0x00000200 Display text service icons on the taskbar when the language bar is minimized. TF_SFT_NOEXTRAICONSONMINIMIZED 0x00000400 Hide text service on the taskbar when the language bar is minimized. TF_SFT_DESKBAND 0x00000800 Dock the language bar in the system task bar. This constant cannot be combined with the TF_SFT_SHOWNORMAL, TF_SFT_DOCK, TF_SFT_MINIMIZED, or TF_SFT_HIDDEN constants.<21> Language Sync Messages Language Profile Information PDU (TS_RAIL_ORDER_LANGUAGEIMEINFO) The Language Profile Information is used to send the current active language profile of the client to the server. It is only sent when both client and server support this capability (TS_RAIL_LEVEL_LANGUAGE_IME_SYNC_SUPPORTED). This PDU contains information about the current active language profile. 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 ProfileType LanguageID LanguageProfileCLSID (16 bytes) ... ... ... ... ProfileGUID (16 bytes) ... ... ... ... KeyboardLayout ...
Protocol Details Common Details Abstract Data Model Server State Machine Figure 5: Server State Machine Diagram State Description Uninitialized This is the initial state of the server. In this state, the server waits for the and the from the client. On receiving these capability sets, the server processes them as specified in section . If the server finds compatible settings, it transitions to the Initializing state. Otherwise, the connection is terminated (see section 1.3.1.4.2). Initializing In this state, the server examines the and the . On receiving these, the server processes the Handshake PDU as specified in section and the Client Information PDU as specified in section , and transitions to the SyncDesktop state. If the server does not receive the Handshake PDU within a specified time, it can disconnect the connection (see section ). SyncDesktop In this state, the server syncs its desktop with that of the client. The server transitions to this state either during the RAIL connection synchronization (see
Change Tracking This section identifies changes that were made to this document since the last release. Changes are classified as Major, Minor, or None. The revision Major means that the technical content in the document was significantly revised. Major changes affect protocol interoperability or implementation. Examples of major changes are: A document revision that incorporates changes to interoperability requirements. A document revision that captures changes to protocol functionality. The revision class Minor means that the meaning of the technical content was clarified. Minor changes do not affect protocol interoperability or implementation. Examples of minor changes are updates to clarify ambiguity at the sentence, paragraph, or table level. The revision None means that no new technical changes were introduced. Minor editorial and formatting changes may have been made, but the relevant technical content is identical to the last released version. The changes made to this document are listed in the following For more information, please contact . Section Description Revision class Common Header (TS_RAIL_PDU_HEADER) Updated content for this version of Windows and Windows Server. Major HandshakeEx PDU (TS_RAIL_ORDER_HANDSHAKE_EX) Updated content for this version of Windows and Windows Server. Major Client Window Snap PDU (TS_RAIL_ORDER_SNAP_ARRANGE) Added content for this version of Windows and Windows Server. Major Server Get Application ID Response PDU (TS_RAIL_ORDER_GET_APPID_RESP) Updated content for this version of Windows and Windows Server. Major Server Get Application ID Extended Response PDU (TS_RAIL_ORDER_GET_APPID_RESP_EX) content for this version of Windows and Major
Windows Server. Sending Window Snap PDU Added content for this version of Windows and Windows Server. Major Processing Server Get Application ID Response PDU Updated content for this version of Windows and Windows Server. Major Processing Server Get Application ID Extended Response PDU Added content for this version of Windows and Windows Server. Major Processing Window Snap PDU Added content for this version of Windows and Windows Server. Major
Index A Abstract data model 76 75 76 73 76 84 84 75 84 73 84 Activate PDU ( 80, 87) 37 16 C 31 16 18 103 Client 76 75 76 73 76 handshake PDU ( 75, 75) higher-layer triggered events ( 75, 76) initialization ( 75, 76) events ( 76, 84) message processing ( 75, 76) 84 76 sequencing rules ( 75, 76) 79 timer events ( 75, 83) timers ( 75, 76) Client Info PDU ( 77, 85) Client Information PDU ( 79, 87) Client MCS Connect Initial PDU ( 76, 85) 21 Confirm Active PDU ( 77, 85) 75 D Data - abstract 76 75 76 73 76 84 84 75 84 73 84 35 32 Demand Active PDU ( 77, 85) 37 Desktop Information Orders ( 79, 86) E 15 Examples 93 94 95 95 91 91 97 Execute PDU ( 79, 87) Execute Result PDU ( 79, 87) F 17 G 67 9 H Handshake PDU 75 75 42 Higher-layer triggered events client ( 75, 76) server ( 75, 84) I 99 99 99 11 Initialization client ( 75, 76) server ( 75, 84) Initialization messages ( 41, 79, 87) 93 9 L 94 client event messages ( 53, 80, 87) 95 Local client system parameters update messages ( 46, 80, 87) 95